プロが教えるわが家の防犯対策術!

フォルダー名の検索してファイルを開くことは出来ました。
複数の開いたファイルからvlookupを利用して抽出したいのですが、そもそもファイルの指定方法がわかりません。

どなたかわかる方いらっしゃいませんか?

---------------------------------------------------
Sub Macro1()


Dim path, fso, file, files

For i = 18 To 21

path = "C:\Users\night\Desktop\新しいフォルダー (3)"

Set fso = CreateObject("Scripting.FileSystemObject")
Set files = fso.GetFolder(path).files


'フォルダ内の全ファイルをループ
For Each file In files



'文字指定
If InStr(file.Name, Cells(i, 3)) >= 1 Then

'ファイルを開く
CreateObject("Shell.Application").ShellExecute file 'Shellオブジェクト.ShellExecute 開くファイルのフルパス



End If

Next file
Next i


End Sub

質問者からの補足コメント

  • '文字指定
    If InStr(file.Name, Cells(i, 3)) >= 1 Then

    Sellスクリプトでファイルを開くとう方法でしか文字指定で検索する方法が見つからない状態です。
    ファイルのタイトル検索して条件に合ったファイルからvlookupで抽出するというVBAを作成したい次第です。

    Workbookオブジェクトを利用して作成できるのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/12/09 19:48

A 回答 (1件)

こんにちは



VlookupとかCell(i, 3)などとあるので、エクセルのVBAだろうと勝手に解釈しました。

>そもそもファイルの指定方法がわかりません。
Sellスクリプトでファイルを開かなくても、エクセルのWorkbooks.Openなどでファイルを開けば、戻り値としてそのWorkbookオブジェクトが取得できますので、そちらを利用すれば宜しいのではないでしょうか?
https://docs.microsoft.com/ja-jp/office/vba/api/ …

とは言え、なんだか沢山のファイルを一度に開いているようなので、関数を使うにしても、「どのブックの、どのシート」に対してLookupするのかを明確にしておく必要がありますけれど・・・

ブックを複数開くのなら、ブックオブジェクトを配列に入れておくなどの工夫が必要になるかもしれません。
実際のセルの値が不明ですけれど、ブック名そのものがセルに入力されているのなら、いちいち変数などに保持しておかなくても、ブック名を利用して参照することは可能です。
(ご提示のコードからは、値がブック名そのものなのかどうかはわかりませんので‥)
  Workbooks("ブック名")
https://docs.microsoft.com/ja-jp/office/vba/api/ …
この回答への補足あり
    • good
    • 2
この回答へのお礼

Sub Sample9()

Const PName = "C:\Users\night\Desktop\新しいフォルダー (3)\"
Dim FName As String

Name = Cells(5, 1)

FName = Dir(PName & "*" & Name & "*")
Workbooks.Open Filename:=PName & FName

End Sub

Workbooksで検索する事が出来ました!ありがとうございます!

お礼日時:2021/12/09 23:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!