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

Step7 (このページ)は、Step6 の続きになっています
VBAを起動させると思わぬエラーで止まってしまうことがります
ここでは筆者がこれまでに経験したエラーとそれに対する対策方法について解説します

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

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

全体の構成は、Step1 ~ Step7 に分割しておりここでは Step7 の説明となります。

▼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:12
キーワードの確認

0:24
パスの確認

0:36
VBAを起動

0:59
検索結果の表示

1:14
検索結果の正しさの確認

1:50
検索結果の削除

(VBAの振る舞いは、Step6とほぼ同じです)

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

緑色で囲まれている箇所 は、入れ替るキーワードがなくなるまで繰り返します

青緑色で囲まれている箇所 は、入れ替るフォルダがなくなるまで繰り返します

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

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

キーワードを入れ替える

フォルダを入れ替える

ファイルを入れ替る

ファイルを開く

ワークシートを入れ替る

キーワードを検索する

検索結果を表示する

ファイルを閉じる

(プロシージャもStep6とほぼ同じです)

コードの説明(Step7)

▼Step7の ソースコードについてはこちらから入手してください
Step7のソースコード← クリックすると入手できます

(グレー色はコードの抜粋。黒色は説明文です。)
※ Step6 → Step7 にかけての変更箇所については、

(変更箇所) ‘Step7

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

と表示しています。

Application.Cursor = xlWait
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual

処理速度を早くするための設定

これらの設定はVBA終了後も引き続き有効となりますのでVBA終了時にデフォルトに戻します

Application.Cursor:
マウスポインタ―の形状を変更
xlWait:砂時計型のポインタ
xlDefault:標準のポインタ(デフォルト)

Application.EnableEvents:
イベントの発生の制御
False:新たなイベントが発生しない
True:新たなイベントが発生する(デフォルト)

Application.DisplayAlerts:
確認メッセージの制御
False:確認メッセージを抑制
True:確認メッセージを開始(デフォルト)

Application.Calculation:
計算方法の設定
xlCalculationManual:手動
xlCalculationAutomatic:自動(デフォルト)

▼鵜原パソコンソフト研究所様のサイトを参考にさせていただいております
https://excel-ubara.com/excelvba5/EXCELVBA210.html

If Not path.Name Like “~*” Then


End If

ファイル名にチルダ(~)がある場合処理をスキップ

チルダ(~):
ファイルを開いたときに生成されるバックアップファイルに追加されます
例 test.txt → test.txt~

バックアップファイルを開こうとするとVBAがエラーで止まります
それを回避しています

If path.Name Like “*.xls*” Or path.Name Like “*.XLS*” Then


End If

エクセルファイル以外のファイルは処理をスキップ
今回の処理内容の場合、エクセルファイル以外のファイルを開こうとするとVBAがエラーで止まることがあります
それを回避しています

Set targetBk = Workbooks.Open(path, ReadOnly:=True, UpdateLinks:=False)

ファイルを開くときに「読み取り専用」&「リンクの更新なし」としています
他の人がファイルを開ているとVBAが止まります
「読み取り専用」とすることでそれを回避しています
リンクが設定されているとファイルと開くときにリンクの更新方法の確認画面が立ち上がりVBAが止まります
「リンクの更新なし」とすることでそれを回避しています

Application.Calculation = xlCalculationAutomatic
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Cursor = xlDefault

VBA開始時に設定した「処理速度を早くするための設定」をデフォルトに戻しています

これらの設定はVBA終了後も引き続き有効となりますのでVBA終了時にデフォルトに戻します

Step7(このページ)では、処理速度を早くする方法とエラー回避方法について説明しました
オフィスなどの共有ファイル内では、他の人が保存したファイルがありますので、想定しないエラーに遭遇しVBAが止まってしまうことがあります
「チルダ(~)」と「読み取り専用」と「リンクの更新なし」はよく遭遇するエラーですのでこれらを回避する記述を追加されることをおすすめします
筆者がこれまでに経験したエラーとなっておりますので、読者様が使われる環境によってはまた別のエラーが発生する可能性もあります
そのような時はIf Then ~ End If 構文を使って回避するようお願いします
エラー回避方法についてお困りの場合はcontact からお問い合わせをお願いします
基本全てのお問い合わせい即返信させていただいております

おすすめ書籍

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

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

https://amzn.to/3b1yqRw

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

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

https://amzn.to/3PXpmfv

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

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

https://amzn.to/3b4sqre

コメント

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