Excelの自動化とVBA入門(1)

Excelのマクロ記述の準備と自動処理マクロ例

1. Excel-VBA

Excelには「VBA(Visual Basic for Applications)」というプログラミングの機能が付属しています。なんの準備もなく使えます。VBAをマスターすれば、エクセルの自動処理マクロや、様々なプログラムを作ることが可能となります。ここでは、1回目として、VBAの使い方と簡単な自動処理マクロの例を紹介します。なお、「VBA」という言葉はプログラム言語のことを差し、そこに書かれた記述(内容)のことを「マクロ」と呼びます。

2. マクロの記述(VBA使用)の準備

Excelを使っていてもVBAの存在に気付かない人も多いと思います。「メニューバー」にVBAに関係する「開発」が出ていないのかもしれません。

▶ メニューバーに「開発」を表示する。

  1. 「ファイル」→「オプション」の「リボンのユーザー設定」で、「メインタブ」の「開発」にチェックを入れてください。メニューに「開発」が現れます。

▶ VBAウインドの表示

  1. 「開発リボン」を開いて「Visual Basic」を押すと、VBAのウインドが開きます。
  2. VBAウインドの左側には、エクスプローラ風のツリー等が表示されます。
  3. エクセル「シート」と「VBAウインド」の二つが見えるように配置しておいてください。

▶ コードウインドの表示

マクロを記述するため「コードウインド」をVBAウインドに表示する手順は下の通りです。

  1. Sheet側の「マクロの記録」を押す。
  2. マクロの記録ウインドが開き、マクロ名の入力を求められます。ここでは、デフォルトで出てくる「Macro1」のままで、「OK」を押す。
  3. VBAのプロジェクトエクスプローラーに「標準モジュール」フォルダが生成されるので、それを開け、「Module1」をダブルクリックすると、コードウインドが見え、マクロの内容(Subプロシージャ:Sub Macro1()~End Sub)が表示されます。
  4. 「‘」は「以降注釈」という意味です。プログラムが分りやすいように注釈を書きます。注釈はマクロの動作には関係ありません。
  5. (sheet側)開発リボンの「記録終了」を押して、記録を止める。

以上で、Excel-VBAを用いてマクロを記述する概要は把握できたと思います。あとは、Subプロシージャにマクロを書いて実行すれば、プログラムが走ります。とはいうものの、「そもそも、マクロの書き方がわからない!」となりますよね。

3. マクロを自動生成する

「マクロはどのように書くのか?」を解決する一歩目は、マクロの自動生成です。自動生成しながら現れたマクロを眺めると、「なるほど、こう書くのだ」と了解できます。これで、「エクセルの自動化」まではできるようになります。マクロの自動生成の手順を説明します。

▶ 自動生成1(範囲の選択、セルへの代入)

いったん、Excelを閉じて、再度Excelを起動し、新規ブック(空白のブック「Book1」)を作製します。上記「2.コードウインドの表示」まで行って、「記録終了」は押さないで、次の作業に入ります。

○ セルへの選択

  • (シート側)A2セルを選んでください。そうすると、「Macro1」に「Range(“A2”).Select」が挿入されます。これで、セルの選択法を把握できました。(この作業中にウインドを移動させた人は、「Application.Left」等も現れます。それらは消しても良いです。)

○ セルへの代入

  • 次に、A2に「10」と入れ、改行します(カーソルはA3に移動)。次の命令が付加されます。
    • ActiveCell.FormulaR1C1 = "10"
    • Range("A3").Select
「アクティブセルを対象にR1C1形式で10を代入。次に、A3セルを範囲とし選択」との意味です。単語を読めば、やっていることはなんとなくわかります。

▶ 自動生成2(ファイルの生成、ウインドの切り替え、ファイルの保存)

続けて、「新たなブックを作って、そのブックにコピペして、ファイルを保存する」命令を追加してみます。

○ 新規ブックの作成

  • (シート側)「ファイル」→「新規」→「空白のブック」を選ぶと、マクロに、「Workbooks.Add」が追加されます。これで、ブックの追加の命令が分かりましたね。ブック名は「book2」になったと思いますが、これまでの作業履歴の関係で「book3」とか他の番号かもしれません。なお、この作業で、現在のアクティブなウインドは「Book2」になりました。

○ ウインドの切り替え

  • 「book1」のウインドを押すと、「Windows("Book1").Activate」が現れ、「book1」がアクティブになります。これで、ウインドの切り替えの方法が分かりました。

○ コピー

  • この「book1」の「A2」セルを選んで。「10」をコピーします。そうすると、「Range("A2").Select」、「Selection.Copy」の2行が追加されます。「選んでコピーする」命令が分かりました。

○ ペースト

  • 「book2」のウインドに移動して、B2セルに、ペーストすると、「Windows("Book2").Activate」「Range("B2").Select」、「ActiveSheet.Paste」が追加され、ウインドを切り替えて、セルを選んで、ペーストする方法が分かりました。

次の作業に入る前に、「Application.CutCopyMode = False」が追加され、コピペのモードが終了したのだと理解できます。

○ ブックの保存

  • 最後に、新たに生成した「book2」を保存します。デフォルトの保存先は、ユーザーのドキュメントのフォルダです。この時、以下が追加されています。
    • 「ActiveWorkbook.SaveAs Filename:="C:\Users\ユーザー名\Documents\Book2.xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False」 
  • 「アクティブのワークブックをファイル名「Book2」でユーザーのドキュメントホルダーに保存する、フォーマット形式はxlOpenXMLWorkbook,バックアップ保存はしない」という意味だろうと察しはつきます。

○ マクロの記録終了

  • 最後に、「Book1」に戻って(Windows("Book1").Activate)、シート側の「記録終了」を押してマクロの記録を停止します。

以上で、「Macro1()」というマクロが完成しました

○ マクロ付きブックの保存

  • この「Book1」を保存しますが、マクロ付きのブックの保存の場合、いったん警告がでます。「Excelマクロ有効ブック(拡張子「.xlsm」)」を選び、ここではファイル名「Macro1.xlsm」として保存します。

▶ マクロ作成中のブックの状況

▶ 作成したマクロのリスト

4. マクロの実行

▶ マクロの実行

  1. Excelが動いていたら、Excelを終了する
  2. 「Macro1.xlsm」を立ち上げる
  3. マクロ付きのファイルを開くと「セキュリティの警告」が出ますが、今のマクロは安全なので、「コンテンツの有効化」を押し、マクロを有効にします。警告が消えます。
  4. すでに入っている「A2セル」の「10」を消す。
  5. 「開発リボン」にある「マクロ」を押し、ます。マクロ「Macro1」を選んで「実行」を押します。
  6. マクロが実行され、A2に「10」が入力されますが、その後に「実行時エラー」で停止します。
  7. 「デバック」を押すと、マクロのエラー箇所が表示されます。
  8. マクロを一旦停止(リセット)します。

▶ エラーの修正(ファイル名の修正)

マクロのリストを見ると、ファイル名が正しく入っていないことが分かります(上図の赤線部分を参照)。マクロを作る時には「Book1」のファイルで作って、そのファイルを「Macro1.xlsm」として保存したこと、新規追加ファイルが「Book2」になっていることがエラーの原因です。修正は以下の通りです(下図の赤線部分参照)。

  1. 「Book1」は「Macro1.xlsm」に変更する。拡張子もつける。
  2. 「Macro1.xlsm」を新規に立ち上げた場合、追加されるブックは「Book1」になるので、「Book2」を「Book1」に変更する。状況によっては別の名前かもしれません。追加するブック名を確認して、修正してください。
  3. 保存ファイル名も「Book1」に変更する。
  4. 変更したマクロの保存:VBAウインドの「ファイル」→「上書き保存」。

▶ マクロの再実行

  1. Excelが動いていたら、Excelを終了する
  2. 「Macro1.xlsm」を立ち上げる

今度は、「Macro1.xlsm」のマクロ「Macro1」を実行すると、A2セルに10が入力され、Book1を生成し、「Macro1.xlsm」に戻って、A2セルをコピーして、Book1に移動して、B3セルに、10をペーストし、そのファイルを。(Cドライブの)ドキュメントホルダーの中に保存したはずです。

▶ 修正後のマクロのリスト

最後に、修正したマクロのリストを示します。赤線部が変更後のファイル名です。なお、注釈行(‘)は、マクロ作成後に挿入、削除しました。

5. まとめ

VBAの準備、マクロ作成の実例を示しながら作成法、実行法を示しました。ここまでの情報で、マクロによる自動処理はできるようになると思います。しかし、プログラムとなると、変数を使用する必要があり、その点はまだ不足しています。次の解説では、変数の取り扱いや、Excelでのプログラムの実例を示し、プログラム作製に関し説明します。


2回目解説へのリンク:VBAの予備知識と簡単なプログラム(変数とセル)