エクセルVBA【複数フォルダの検索作業を自動化】|Step4

Step4 (このページ)は、Step3 の続きになっています。
VBAを使って、複数のファイルに対してキーワードを検索する方法について解説します

Step3 を読まれた方 又は VBA で複数のワークシートに対してキーワード検索する方法をすでに知っている方は、このままお読みください。Step1 ~ Step3 の内容は割愛しておりますので、まだ Step3 を読まれていない方 又は VBA で複数のワークシートに対するキーワード検索の方法を知りたい方は、先に下記のページを読まれることをお勧めします。

エクセルVBA【複数フォルダの検索作業を自動化】|Step3
Step3 (このページ)は、Step2 の続きになっています。 VBAを使って、複数のワークシートに対してキーワードを検索する方法について解説します Step2 を読まれた方 又は VBA で複数の検索結果を表示させる方法をすでに...

簡単な処理(検索のみ)~ 実用的な処理 までを Step1 ~ Step7 の 7段階に区切っています。

▼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となります。

▼まずはどのようなことができるかについてこちらをご覧ください

動画の説明

0:00
検索対象のファイルの確認

0:46
フォルダの設定

2:48
キーワードの設定

2:53
マクロボタン(Step4)の作成

3:38
VBAを起動

3:44
検索結果の表示

4:04
検索結果の正しさの確認

5:23
検索結果の削除

Step4(プロシージャ)の説明

水色で囲まれている箇所 は、入れ替るファイルがなくなるまで繰り返します

青色で囲まれている箇所 は、入れ替るワークシートがなくなるまで繰り返します

ファイルを入れ替る

ファイルを開く

ワークシートを入れ替る

キーワードを検索する

検索結果を表示する

ファイルを閉じる

コードの説明(Step4)

▼Step4 の ソースコードについてはこちらから入手してください
Step4のソースコード← クリックすると入手できます
(グレー色はコードの抜粋。黒色は説明文です。)
※ Step3 → Step4 にかけての変更箇所については、

(変更箇所) ‘Step4

‘↓Step4
(変更箇所)
‘↑Step4

と表示しています。

Dim path As Variant
Dim fl As folder
Dim files As files
Dim fso As Object

フォルダ内のファイルに対して検索できるようにするためこれらの変数を宣言

複数のファイルを扱うため path のデータ型を Variant型(バリアント)にします

Variant型(バリアント):
整数や文字列だけではなくどんな型も格納できる万能タイプのデータ型

Set fso = CreateObject(“Scripting.FileSystemObject”)
Set fso = New FileSystemObject
Set fl = fso.GetFolder(“C:\Users\●●●●\Desktop\フォルダ1”)
Set files = fl.files

‘path = “C:\Users\●●●●\Desktop\フォルダ\Book1.xlsx”
‘filename = “Book1.xlsx”

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

フォルダに対して何かしらの処理(今回のようにフォルダ内のファイルを検索する等)を実行する場合、FileSystemObject(ファイルシステムオブジェクト)を使用します

fl の中にフォルダを格納し、files の中にフォルダ内のファイル全てを格納しています

For Each path In files

検索対象ファイルを変更するたびに、検索処理を実行しています

▼ For ~ Next の間にある処理内容を繰り返し実行します
For Each path In files
(処理内容)
Next

.Cells(i, “F”) = targetBk.Name

F列に、ファイル名を表示させています

Workbooks(targetBk.Name).Close

繰り返し処理の最初で開いたファイルを、繰り返し処理の最後で閉じています

Next path

上記For文の範囲の最後の位置を指定しています

Step4(このページ)では、複数のファイルに対してキーワードを検索する方法について説明しました
FileSystemObject(ファイルシステムオブジェクト)を使用することでフォルダに対する操作(今回のようにフォルダ内のファイルを検索する等)を可能にしています
次のStep5では複数のフォルダに対して検索する方法を解説します

エクセルVBA【複数フォルダの検索作業を自動化】|Step5
Step5 (このページ)は、Step4 の続きになっています。 VBAを使って、複数のフォルダに対してキーワードを検索する方法について解説します Step4 を読まれた方 又は VBA で複数のファイルに対してキーワード検索する方...

おすすめ書籍

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

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

https://amzn.to/3b1yqRw

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

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

https://amzn.to/3PXpmfv

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

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

https://amzn.to/3b4sqre

コメント

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