【Excel VBA】【仕事術】前職で一番役に立ったマクロの機能

テクノロジー

はじめに

このブログには広告リンクが含まれています

デジタルトランスフォーメーションDXが重要視されている昨今、

毎回同じ仕様のルーティンになっているExcelの作業を自動化したいな

マクロが入っていても、何回もポチポチやるのめんどい。。。

リモコン操作みたいに一回ボタンを押しただけで作業が終わればいいのに

って考えている人もいらっしゃると思います。

そんな時、前職で実際に使用してみて一番役に立ったExcelマクロの機能(詳細コードは除く)を紹介させていただきますので、是非とも参考にしていただければ幸いです。

結論:複数のマクロが入っている作業ブックAのマクロを自動実行する作業用ブックBを作成し、B1回の操作で操作でAを遠隔で自動実行する

要するに、家電をアプリで操作しているIOTみたいな感じです。。。

厳密には違うんですけどね。

別ブックのマクロを実行するマクロというのが存在します。

今回は通常の作業用ブックA(管理番号違いの同仕様10件)のマクロを順番に押下していくと10件あたり30分かかる作業が、別の作業用ブックBを用意してBのボタンを一回押下するだけでAの作業を10件当たり6分(1件約36秒)に短縮できたというノウハウをお伝えします。

会社情報になるので、実際のスクリーンショットはお見せできませんのでご了承ください。

各導入機能

1:遠隔操作したいファイル名(作業ブックAとする)管理番号の件数分一覧を遠隔操作用ファイル(作業ブックBとする)任意の行に取得する
2:取得した作業ブックAのファイル名を、作業ブックBから操作し該当ファイルを自動で開く
3:作業ブックBのワンクリックで作業ブックAの該当マクロを順番に指定して起動させる
4:無事に該当の作業ブックAの作業が終了したら作業ブックBにステータス”成功”もしくはエラー内容が自動入力されるようにしておく
5:次の管理番号の作業用ブックAを開いて最後のファイルまで繰り返し
流れ的にはこんな感じです。
全て裏で自動で実行すると、人間側が何をやっているのかわからないという状況に陥る可能性がありますので、該当ファイル名や作業ステータスは見える化しておくとよいでしょう。

導入に関して気を付けること

1.法令、コンプライアンス、社内ルール、倫理観を順守する

法令やコンプライアンス違反はもちろんダメですが、会社の方針で、このようなやり方はNGだと指摘されたら別の方法を考えましょう。
また、倫理観を順守することも大切です。
極論ですが、クローン技術があっても少子化対策には使用しないのと似たようなもの?です。(不適切な発言だったらすみません)

2.メッセージボックスが出現した時の処理

前提として、マクロにはメッセージを表示して、そのメッセージに対してOKボタンや、”はい”か”いいえ”を聞かれて押下しないとマクロの実行が終了しない(メッセージに表示されるボタンをクリックするまでが一連のマクロの機能)というものが存在します。
全自動にしたいのに途中でメッセージが何度も表示されていては、途中でクリックしないとプログラムが進みませんし、作業スピードも落ちます。
仮想エンターキーを入力して自動で押下してもらうというプログラムも存在しますが、ハードウェアなど、外部環境に左右されて正しい出力が得られない場合があり、他のアプリに誤入力など悪影響を及ぼしてしまう懸念が生じるので、この方法はあまりお勧めしません。

そこで、メッセージが表示される部分だけプログラムの実行を遮断するという方法があります。

Excel VBAで、該当マクロを実行したときに表示されるメッセージを遮断する方法

結論:作業ブックBから作業ブックAの該当マクロのプログラムコードにアクセスし、”Msgbox”の文字列がある行数を特定して、先頭に”’”(シングルクォーテーション)の文字列を追加するプログラムを追加する。

やってることは、合法的に既存の別ブックのプラグラム構文を一部変更して、メッセージの表示される部分だけ遮断するという方法です。

このプログラムを実行するには、[セキュリティ センター] をクリックし、[セキュリティ センターの設定] をクリックします。 [マクロの設定] をクリックし、[VBA プロジェクト オブジェクト モデルへのアクセスを信頼する] チェック ボックスをオンにし、[OK] をクリックします。

もちろん後ほどそのプログラムを繰り返し、元の状態に戻すこともできますが、作業ブックAが使い捨ての場合は時短のために”’”を付けたままでもよいでしょう。

この時に気を付けなければならないのはそのメッセージが表示されないことで、プログラムに悪影響があるかを事前にチェックしておくことです。

”空欄を詰めました(OK)”このようなメッセージならば、遮断しても問題ないと思います。

”印刷しますか?(はい・いいえ)”このようなメッセージが表示された場合メッセージを遮断すると、”いいえ”の処理になるので、影響が出ると言えます。

また、エラーが出た際にメッセージが表示される仕様だった場合、メッセージを遮断してしまうと何が起きているかわからない、エラー処理がなされない、またはプログラムが次に進まないといった不具合が起きてしまう可能性があります。

このような場合は、作業ブックAのエラー処理と同様のコードを作業ブックBで記述して整合性を保ち、きちんとエラー処理とその内容がわかるようにしておきましょう。

また、プログラムコードの描き方次第ではアクティブシートが変わってしまう可能性があるので、別ブックから操作できるように正しく参照先を指定しておきましょう。

また、特定の条件で次のプログラムに進めない場合はAをセーブせずに閉じる処理をして、次のファイルに進むなど、対策を考えましょう。

このように、作業ブックA(管理番号が違うけど同じ仕様のツール)は作業ブックBにファイル名を一覧に表示することによって、作業ブックBで繰り返し処理を導入するだけで、ワンボタンで作業が終わります。

Aのメッセージが出現するプログラムを遮断→BAのマクロを遠隔で順番に実行(エラー処理も含む)→Bにステータス(成功orエラー内容)を記述して次のファイルに進む

こうすることでAを一切開かずに管理番号違いの件数分のAの作業をBから完了することができます。

まとめ

一般的には株式会社では株主に利益を還元するため、目的のためには最短ルートの選択して業務を効率化することが必要です。今回私が紹介した方法は、同じ規則性の作業を繰り返しやるということが前提でしたが、目的達成に必要ないならば思い切ってその仕事はしないというのもあくまで一つの選択肢であることを念頭に入れ、最短で最大の成果を出せるように努めていきましょう。

【PR広告】

 

 

タイトルとURLをコピーしました