Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


33376 / 76734 ←次へ | 前へ→

【48579】Re:複数フォルダの全ファイル取得方法
回答  ハチ  - 07/4/23(月) 17:28 -

引用なし
パスワード
   ▼もとあし さん:
>>下記のコードは、エラーがでます。(安易なもので、すみません。。。)
>なぜかは分かっていませんが、Dirを異なる階層で何度もループで使用するのは
>Dirの戻り値が変わるから、良くないのかな。。。と思っています。

ここは、お察しの通りだと思いますが、
自分の環境で実行するとそれ以前の箇所でエラーが出てしまいます。
(もちろんパスは修正してますが)

>何か、糸口だけでも教えていただけないでしょうか。
>また上記の理由が間違っていましたら、その正しいエラーの出る
>理由も併せて教えていただけないでしょうか。

Dirだけで行うとすると結構面倒な作業だと思います。
自分だったら、
FileSystemObjectでFoldersを再帰的に呼び出すか、
コマンドラインのDirを使ってやります。

混乱しそうなら下記コードは無視してください。
Sub Test()
Dim WSH As Object
Dim Cmd As Object
Dim CmdTxt As String
Dim myPath As String
Dim i As Long

Const Target_File As String = "*.xls"
Const Dir_Opt As String = "/S /B /A:-D" 'Dirオプションの指定(コマンドプロンプトで確認)

myPath = "C:\Work" '検索のルートパスの指定

CmdTxt = """dir" & Dir_Opt & " " & """" & myPath & "\" & Target_File & """"""
Set WSH = CreateObject("WScript.Shell")
Set Cmd = WSH.Exec("%ComSpec% /C " & CmdTxt)
i = 1
Do Until Cmd.StdOut.AtEndOfStream
  Cells(i, 1).Value = Cmd.StdOut.ReadLine
  i = i + 1
Loop

Set Cmd = Nothing
Set WSH = Nothing

End Sub

3 hits

【48577】複数フォルダの全ファイル取得方法 もとあし 07/4/23(月) 15:48 質問
【48579】Re:複数フォルダの全ファイル取得方法 ハチ 07/4/23(月) 17:28 回答
【48595】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/24(火) 11:50 お礼
【48597】Re:複数フォルダの全ファイル取得方法 ハチ 07/4/24(火) 14:00 回答
【48609】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/25(水) 14:24 お礼
【48610】Re:複数フォルダの全ファイル取得方法 ハチ 07/4/25(水) 15:47 発言
【48613】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/25(水) 16:08 お礼
【48581】Re:複数フォルダの全ファイル取得方法 ichinose 07/4/23(月) 18:42 発言
【48596】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/24(火) 12:01 お礼
【48612】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/25(水) 15:53 質問
【48618】Re:複数フォルダの全ファイル取得方法 ichinose 07/4/25(水) 19:52 発言
【48627】Re:複数フォルダの全ファイル取得方法 もとあし 07/4/26(木) 10:31 お礼
【48638】Re:複数フォルダの全ファイル取得方法 ichinose 07/4/26(木) 22:01 発言
【48639】Re:複数フォルダの全ファイル取得方法 追伸 ichinose 07/4/27(金) 7:32 発言
【48642】Re:複数フォルダの全ファイル取得方法 追伸 もとあし 07/4/27(金) 12:02 お礼

33376 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free