このページではVBAを使って複数フォルダ内のファイルを検索する方法について解説しています。
しかもキーワードも複数の場合に対応!
このページで紹介しているVBAは、検索するフォルダとキーワードをセットして、VBAを起動させると後はVBAが自動で検索してくれます。
その間の時間は他の仕事や自分の時間を過ごすことに使えます。
コーヒーでも飲んでいる間に、VBA があなたの代わりにファイルを探してくれます。
職場などでは他の人が保存したファイルを探すことがあるかと思います。
自分で保存したファイルではないので、ファイル名の付け方やフォルダの置き方も自分とは違い探すのは苦労した経験をした人もいるのではないでしょうか。筆者もこのような苦労の経験者の一人です。そんな経験からファイル検索を自動化して作成したVBAを紹介します。
このページでは筆者が普段使っているVBAとほぼ同じものとしています。
とても便利で今ではこれなしでは仕事にならないほど重宝しています。
もし読者様が私と同じようにファイル検索で苦労されているとしたらこのページを読んでいただくと、とても仕事が楽になります。
今すぐにでも使いたいという人のために、ファイル検索VBA搭載のファイルを無料提供もしています。
自分で作れるようになりたいという人のためには、ソースコードの解説をしています。
読者様のニーズに合わせて読み進めてください。
今すぐに使いたい人
ファイル検索VBA搭載のファイルのダウンロード方法とご使用方法
ファイル検索VBA搭載のファイル ← こちらをクリックすると入手できます
(zipファイル内にある ご使用方法を読みながらご使用ください)
動画の説明
0:00
キーワードの設定場所
0:27
フォルダの設定場所
0:45
マクロボタン(Step7)をクリック
0:53
検索結果の表示
1:05
検索結果の正しさの確認
自分で作れるようになりたい人
ここではこのページで紹介しているVBAのコードを説明します。
初めてVBAに触れる人にとっては結構複雑に感じるかと思いますので、最初は簡単なコードを説明し徐々に複雑にしていきます。すでにVBAの知識がある人はわかるところは読み飛ばして自分に必要なところから読み始めれるようになっています。
簡単な処理(検索のみ)~ 実用的な処理 までを Step1 ~ Step7 の 7段階に区切っています。
最初は、1つのファイルだけを検索する方法です。まず検索する方法を説明し、その次に複数のファイルや複数のフォルダについても検索する方法を説明していきます。
▼Step1 ~ Step7 の違い
Step | キーワード | フォルダ | ファイル | シート | 検索対象 |
---|---|---|---|---|---|
1 | 1つ | 1つ | 1つ | 1つ | 1つ |
2 | 1つ | 1つ | 1つ | 1つ | 複数 |
3 | 1つ | 1つ | 1つ | 複数 | 複数 |
4 | 1つ | 1つ | 複数 | 複数 | 複数 |
5 | 1つ | 複数 | 複数 | 複数 | 複数 |
6 | 複数 | 複数 | 複数 | 複数 | 複数 |
7 | 複数 | 複数 | 複数 | 複数 | 複数 |
※ Step6 に機能(処理速度やエラー回避などの)を追加したものが Step7 となります。
Step1の説明
まずは「検索する」という動作をVBAで実現する方法です。
0:00
検索対象のファイルの確認
0:29
Step1 のソースコードの確認
1:14
フォルダ と ファイル名 と キーワード の設定
2:48
VBA の起動
2:55
検索結果の表示
3:14
キーワード の変更(ノブシゲ → のぶしげ)
3:20
VBA の起動
3:25
検索結果の表示
コードの説明
▼ソースコードはこちらからご覧になれます
ソースコードのファイル ← クリックすると入手できます
(グレー色はコードの抜粋。黒色は説明文です。)
プロシージャーの宣言
マクロボタンを設定する時に、「Step1」を選択します
プロシージャー:
VBAが実行する一連の処理内容のこと
Dim filename As String
Dim keyword As String
フォルダ と ファイル名 と キーワード を設定できるように変数を宣言
変数:
値を出し入れするための箱のようなもの
String:
文字列のデータ型
ファイルの開閉作業をするために変数を宣言
検索処理の前後でファイルを開いたり閉じたりするのでそのために使います
Workbook:
このページで言っている「ファイル」と同じ意味のデータ型です
検索処理を実行するために変数を宣言
この変数の中にキーワードがあるかないかで処理を分岐させます
range:
ワークシート内のA1、A2などのセルの範囲に対して使用する変数
filename = “Book1.xlsx”
keyword = “ノブシゲ”
●●●● の箇所は、使用しているPCによって異なります
フォルダ と ファイル名 と キーワード に 値 を代入
Set targetBk = Workbooks.Open(path)
ファイルを開きます。
「’ファイルを開く」は、これはファイルを開くというコードであることが人に分かるようにしているメモ書きです。このようにコードにメモ書きをすることができます。ただし、メモの左側に’(シングルクォーテーション)を追記するルールがありますのでご注意!
このように左側に’(シングルクォーテーション)を追記することをコメントアウトといいます。
コメントアウト:
‘(シングルクォーテーション)の右側に書かれた文字を、パソコンはスキップします。
Set MyRange = targetBk.Worksheets(1).Cells.Find(keyword)
キーワードを検索します
もしキーワードが存在する場合、以下の処理を実行します
これは If 文 と呼ばれる構文で、条件に合致する場合、If Then ~ End If の間に記述されている処理を実行します
-
If (条件) Then
(処理内容)
End If
キーワードがどこにあるかをメッセージボックスで表示します
(例 ノブシゲ は D6 にあります)
MsgBox keyword & “はありません”
キーワードがない場合、キーワードがないことをメッセージボックスで表示します
(例 のぶしげ はありません)
条件に合致しない場合、Else ~ End If の間に記述された処理を実行します
-
If (条件) Then
(処理内容 ※条件に合致する場合)
Else
(処理内容 ※条件に合致しない場合)
End If
Workbooks(filename).Close
ファイルを閉じます
Set MyRange = Nothing
変数の中身を空にしています
Set ~ As ~ で宣言した変数については、処理の最後の方でこのような処理をします
こうしておくことで思わぬエラーを回避できます
このページでは、VBA でキーワード検索しキーワードが存在する場所を表示させる方法を説明しました。ただし、表示されたキーワードの場所は1つだけでした。次の Step2 では、複数のキーワードの場所を表示させる方法について解説していきます。
▼Step2のページはこちらからどうぞ
おすすめ書籍
おすすめの書籍①(初級編)
ググってもVBAのことを調べることはできますが断片的な情報が多いです
この本で全体像を理解しておくとググったときに断片的な情報を補完してくれるのでより理解できるようになります
おすすめ書籍②(中級編)
メソッド&プロパティをたくさん知っているとできることは多くなっていきます
ただし全て使えるとは限りませんよね
「自分がしたいこと」を実現するために知っておくべきメソッド&プロパティを無駄なく調べることができ効率よくメソッド&プロパティを習得できます
おすすめ書籍③(上級編)
かなりボリュームはありますがとても読みやすいです
1章から順番に読んでいくことでVBAの構造が理解できるようになっています
読み終えるまでとても時間がかかりましたがとてもためになりました
VBAは作った後のメンテナンスが重要なのですが、この本を読むと
とてもメンテナンスのしやすいコードがかけるようになります
コメント