【VBA】複数フォルダ内からファイルを検索 複数キーワードも|Step1

Excel VBA 検索編 Step1

このページでは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
検索結果の表示

コードの説明

▼ソースコードはこちらからご覧になれます
ソースコードのファイル ← クリックすると入手できます

(グレー色はコードの抜粋。黒色は説明文です。)

Public Sub Step1()

プロシージャーの宣言
マクロボタンを設定する時に、「Step1」を選択します

プロシージャー:
VBAが実行する一連の処理内容のこと

Dim path As String
Dim filename As String
Dim keyword As String

フォルダ と ファイル名 と キーワード を設定できるように変数を宣言

変数:
値を出し入れするための箱のようなもの

String:
文字列のデータ型

Dim targetBk As Workbook

ファイルの開閉作業をするために変数を宣言
検索処理の前後でファイルを開いたり閉じたりするのでそのために使います

Workbook:
このページで言っている「ファイル」と同じ意味のデータ型です

Dim MyRange As range

検索処理を実行するために変数を宣言
この変数の中にキーワードがあるかないかで処理を分岐させます

range:
ワークシート内のA1、A2などのセルの範囲に対して使用する変数

path = “C:\Users\●●●●\Desktop\フォルダ1\Book1.xlsx”
filename = “Book1.xlsx”
keyword = “ノブシゲ”

●●●● の箇所は、使用しているPCによって異なります

フォルダ と ファイル名 と キーワード に 値 を代入

‘ファイルを開く
Set targetBk = Workbooks.Open(path)

ファイルを開きます。
「’ファイルを開く」は、これはファイルを開くというコードであることが人に分かるようにしているメモ書きです。このようにコードにメモ書きをすることができます。ただし、メモの左側に’(シングルクォーテーション)を追記するルールがありますのでご注意!
このように左側に’(シングルクォーテーション)を追記することをコメントアウトといいます。

コメントアウト:
‘(シングルクォーテーション)の右側に書かれた文字を、パソコンはスキップします。

‘キーワードの場所を出力する
Set MyRange = targetBk.Worksheets(1).Cells.Find(keyword)

キーワードを検索します

If Not MyRange Is Nothing Then

もしキーワードが存在する場合、以下の処理を実行します
これは If 文 と呼ばれる構文で、条件に合致する場合、If Then ~ End If の間に記述されている処理を実行します

    If (条件) Then
    (処理内容)
    End If
MsgBox keyword & “は、” & MyRange.Address(Rowabsolute:=False, columnabsolute:=False) & “にあります”

キーワードがどこにあるかをメッセージボックスで表示します
(例 ノブシゲ は D6 にあります)

Else
MsgBox keyword & “はありません”

キーワードがない場合、キーワードがないことをメッセージボックスで表示します
(例 のぶしげ はありません)
条件に合致しない場合、Else ~ End If の間に記述された処理を実行します

    If (条件) Then
    (処理内容 ※条件に合致する場合)
    Else
    (処理内容 ※条件に合致しない場合)
    End If
‘ファイルを閉じる
Workbooks(filename).Close

ファイルを閉じます

Set targetBk = Nothing
Set MyRange = Nothing

変数の中身を空にしています
Set ~ As ~ で宣言した変数については、処理の最後の方でこのような処理をします
こうしておくことで思わぬエラーを回避できます

このページでは、VBA でキーワード検索しキーワードが存在する場所を表示させる方法を説明しました。ただし、表示されたキーワードの場所は1つだけでした。次の Step2 では、複数のキーワードの場所を表示させる方法について解説していきます

▼Step2のページはこちらからどうぞ

複数フォルダ内からファイルを検索 複数キーワードも|Step2
Excel VBAにより検索作業を自動化する方法について動画付きで解説します。Step1では検索方法について解説しました。Step2では複数の検索キーワードを続けて検索する方法について解説します。複数キーワード&複数フォルダ&複数ファイル&複数ワークシートでもワンクリックで解決。あなたの代わりに作業の自動化

おすすめ書籍

おすすめの書籍①(初級編)

ググってもVBAのことを調べることはできますが断片的な情報が多いです
この本で全体像を理解しておくとググったときに断片的な情報を補完してくれるのでより理解できるようになります

https://amzn.to/3b1yqRw

おすすめ書籍②(中級編)

メソッド&プロパティをたくさん知っているとできることは多くなっていきます
ただし全て使えるとは限りませんよね
「自分がしたいこと」を実現するために知っておくべきメソッド&プロパティを無駄なく調べることができ効率よくメソッド&プロパティを習得できます

https://amzn.to/3PXpmfv

おすすめ書籍③(上級編)

かなりボリュームはありますがとても読みやすいです
1章から順番に読んでいくことでVBAの構造が理解できるようになっています
読み終えるまでとても時間がかかりましたがとてもためになりました
VBAは作った後のメンテナンスが重要なのですが、この本を読むと
とてもメンテナンスのしやすいコードがかけるようになります

https://amzn.to/3b4sqre

コメント

この記事が気に入ったら
いいね!しよう
最新情報をお届けします。
タイトルとURLをコピーしました