Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

CallステートメントでVBAのプログラミングを効率化する


日々VBAで自動化ツールを作成していると、プログラミング自体を効率化したくなってきます。

 

手っ取り早いのが過去の資産の流用です。

例えば、入力するcsvファイルやエクセルファイルをユーザーに選択させる、というのは毎回似たようなコードです。その部分をCallステートメントで呼び出します。


Callは他のプロシジャを呼び出すステートメントです。VBAステートメントはプログラムの流れをコントロールするものです。

他のプロシジャを呼び出せると言う事は、自動化したい作業を細かく分割して、分割したモノを呼び出していけば良いと言う事になります。

これで過去の資産の流用だけで無く、コードの流れがよく分かるようになってきます。
 例えば下記のようなものです。

Sub 自動化サンプル_メイン()

    Call データAの取り込み
    Call データBの取り込み
    Call データの抽出作業
    Call 出力データの見た目を整える
    Call 出力データをデータAのフォルダに保存する
    Call OutLookのメールに出力データを添付する

End Sub

まず、各手順を順に呼び出すプロシジャを作成します。
この例ではデータAとデータBを取り込んだ後にメインの作業に移っています。

データを取り込む部分は、取り込むファイル名が違うだけで、そのほかの部分は流用できます。
ユーザーが選んだファイルが既に開いていたり、存在しないデータを開こうとしたとき、
×やキャンセルを押したときの対応など細かいところをしっかり作りこんだものを一度作成しておけば、
次回からそれを流用することで、コーディングの時間削減が可能です。

その後、それぞれのプロシジャを作っていけばOKです。

今日は「データの抽出作業」の部分を作ろう、など開発の見通しも立ちやすくなります。
まだ作っていないプロシジャ名をCallで書いておくと、実行時エラーになるので、
一旦コメントアウトし、プロシジャができたらコメントから戻しておきましょう。