Excel VBA質問箱 IV

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

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


7988 / 76733 ←次へ | 前へ→

【74326】Re:Next で行まで初期化してしまうかどうか
発言  kanabun  - 13/5/23(木) 0:41 -

引用なし
パスワード
   ▼にしもり さん:

いまさらですが、

> Sub FileSearch(Path As String, 貼付行 As Long)
>   Dim Folder As Object
>   Dim File As Object
>
>   With CreateObject("Scripting.FileSystemObject")
>     For Each Folder In .GetFolder(Path).SubFolders
>      
>       Call FileSearch(Folder.Path, 貼付行)
>
>       For Each File In .GetFolder(Path).Files
>         貼付行 = 貼付行 + 1
>         Cells(貼付行, 1).Value = File.Path
>       Next File
>
>     Next Folder
>   End With
>
> End Sub

この処理順、おかしくないですか?

実行すると、
同じファイルが 何度も書き出されないですか?

先に 指定フォルダ内のファイルを書き出して、
それから サブフォルダを再帰で検索したほうがいいような気がします。


'↓ ★ 事前に Microsoft Scripting Runtime へ参照設定が必要です。

Sub Sample()
  Dim Fso As Scripting.FileSystemObject
  Dim oFolder As Scripting.Folder
  
  Set Fso = New Scripting.FileSystemObject
  Set oFolder = Fso.GetFolder("C:\_cosmos\Tr")
  
  FileSearch2 oFolder, 0
End Sub

Private Sub FileSearch2(myFolder As Scripting.Folder, _
            貼付行 As Long)

  Dim oFolder As Scripting.Folder
  Dim oFile As Scripting.File
  Dim s As String

  For Each oFile In myFolder.Files
    貼付行 = 貼付行 + 1
    Cells(貼付行, 1).Value = oFile.Path
  Next

  For Each oFolder In myFolder.SubFolders
    FileSearch2 oFolder, 貼付行
  Next

End Sub
2 hits

【74322】Next で行まで初期化してしまうかどうか にしもり 13/5/22(水) 19:16 質問
【74323】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/22(水) 19:31 発言
【74324】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/22(水) 23:46 発言
【74325】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/22(水) 23:48 発言
【74336】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/23(木) 20:08 発言
【74338】Re:Next で行まで初期化してしまうかどうか にしもり 13/5/24(金) 6:04 お礼
【74339】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/24(金) 9:18 発言
【74326】Re:Next で行まで初期化してしまうかどうか kanabun 13/5/23(木) 0:41 発言
【74327】Re:Next で行まで初期化してしまうかどうか にしもり 13/5/23(木) 5:19 発言

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