Step7 (このページ)は、Step6 の続きになっています
VBAを起動させると思わぬエラーで止まってしまうことがります
ここでは筆者がこれまでに経験したエラーとそれに対する対策方法について解説します
Step6 を読まれた方 又は VBA で複数のキーワードに対する検索する方法をすでに知っている方は、このままお読みください。Step1 ~ Step6 の内容は割愛しておりますので、まだ Step6 を読まれていない方 又は 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.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
・
・
End If
ファイル名にチルダ(~)がある場合処理をスキップ
チルダ(~):
ファイルを開いたときに生成されるバックアップファイルに追加されます
例 test.txt → test.txt~
バックアップファイルを開こうとするとVBAがエラーで止まります
それを回避しています
・
・
End If
エクセルファイル以外のファイルは処理をスキップ
今回の処理内容の場合、エクセルファイル以外のファイルを開こうとするとVBAがエラーで止まることがあります
それを回避しています
ファイルを開くときに「読み取り専用」&「リンクの更新なし」としています
他の人がファイルを開ているとVBAが止まります
「読み取り専用」とすることでそれを回避しています
リンクが設定されているとファイルと開くときにリンクの更新方法の確認画面が立ち上がりVBAが止まります
「リンクの更新なし」とすることでそれを回避しています
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.Cursor = xlDefault
VBA開始時に設定した「処理速度を早くするための設定」をデフォルトに戻しています
これらの設定はVBA終了後も引き続き有効となりますのでVBA終了時にデフォルトに戻します
Step7(このページ)では、処理速度を早くする方法とエラー回避方法について説明しました
オフィスなどの共有ファイル内では、他の人が保存したファイルがありますので、想定しないエラーに遭遇しVBAが止まってしまうことがあります
「チルダ(~)」と「読み取り専用」と「リンクの更新なし」はよく遭遇するエラーですのでこれらを回避する記述を追加されることをおすすめします
筆者がこれまでに経験したエラーとなっておりますので、読者様が使われる環境によってはまた別のエラーが発生する可能性もあります
そのような時はIf Then ~ End If 構文を使って回避するようお願いします
エラー回避方法についてお困りの場合はcontact からお問い合わせをお願いします
基本全てのお問い合わせい即返信させていただいております
おすすめ書籍
おすすめの書籍①(初級編)
ググってもVBAのことを調べることはできますが断片的な情報が多いです
この本で全体像を理解しておくとググったときに断片的な情報を補完してくれるのでより理解できるようになります
おすすめ書籍②(中級編)
メソッド&プロパティをたくさん知っているとできることは多くなっていきます
ただし全て使えるとは限りませんよね
「自分がしたいこと」を実現するために知っておくべきメソッド&プロパティを無駄なく調べることができ効率よくメソッド&プロパティを習得できます
おすすめ書籍③(上級編)
かなりボリュームはありますがとても読みやすいです
1章から順番に読んでいくことでVBAの構造が理解できるようになっています
読み終えるまでとても時間がかかりましたがとてもためになりました
VBAは作った後のメンテナンスが重要なのですが、この本を読むと
とてもメンテナンスのしやすいコードがかけるようになります
コメント