Excel VBA質問箱 IV

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

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


1744 / 13646 ツリー ←次へ | 前へ→

【72224】ファイル検索について kog 12/6/22(金) 11:55 質問[未読]
【72225】Re:ファイル検索について UO3 12/6/22(金) 12:53 発言[未読]
【72226】Re:ファイル検索について UO3 12/6/22(金) 13:35 発言[未読]
【72227】Re:ファイル検索について kog 12/6/22(金) 13:51 お礼[未読]

【72224】ファイル検索について
質問  kog  - 12/6/22(金) 11:55 -

引用なし
パスワード
   マクロの初心者です
よろしくお願いします

下記の内容でファイル検索を行っているのですが、
サブフォルダを検索しないようにするには
どのように変更すればいいのでしょうか。

'ファイル検索
Public Function FileSearch(Path As String, Target As String) As String

  Dim FSO As Object, Folder As Variant, File As Variant
  Set FSO = CreateObject("Scripting.FileSystemObject")
  For Each Folder In FSO.GetFolder(Path).SubFolders
    Call FileSearch(Folder.Path, Target)
  Next Folder
  For Each File In FSO.GetFolder(Path).Files
    If File.Name Like Target Then
      FileSearch = File.Name
      Exit For
    End If
  Next File
End Function

【72225】Re:ファイル検索について
発言  UO3  - 12/6/22(金) 12:53 -

引用なし
パスワード
   ▼kog さん:

こんにちは
今、逆に再帰というスペシャルなロジックでサブフォルダを見に行っていますので
それをやめ、通常のファイル検索にすればいいのですが、それよりも・・・

通常、(サブフォルダ検索の有無をとわず)この構成で処理をするのは、
指定フォルダ内のファイルの一覧を取得するといった場合です。

ところが、このコードは、指定の単一ファイルが指定フォルダにあれば結果としてファイル名を
なければ空白を返すファンクションプロシジャですよね。

で、
結果の変数 = FileSearch【フォルダパス名,ファイル名)
こんなように使っておられるんだと思いますが

結果の変数 = DIR(フォルダパス & "\" & ファイル名)

このように書けば一発なんですが?

【72226】Re:ファイル検索について
発言  UO3  - 12/6/22(金) 13:35 -

引用なし
パスワード
   ▼kog さん:

単一の指定ファイルの有無チェックでしょうから、以下のようなコードが参考になるかと。

Sub Sample()
  Dim FSO As Object
  Dim fName As String
  Dim pName As String
  
  pName = ThisWorkbook.Path & "\"
  fName = "ブックX.xls"
  
'FSOによる存在有無の確認

  Set FSO = CreateObject("Scripting.FileSystemObject")
  If FSO.FileExists(pName & fName) Then
    MsgBox "存在します"
  Else
    MsgBox "存在しません"
  End If
  
'標準のDIR関数による存在有無の確認

  If Len(Dir(pName & fName)) > 0 Then
    MsgBox "存在します"
  Else
    MsgBox "存在しません"
  End If
  
End Sub

【72227】Re:ファイル検索について
お礼  kog  - 12/6/22(金) 13:51 -

引用なし
パスワード
   UO3 さん

ありがとうございます
Dir関数で取得できるようになりました。

またわからない事があったら質問するので
よろしくお願いします。

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