Excel業務効率化のためのAI活用完全ガイド:初めてのマクロ生成と実行

初めてのマクロ生成 「メッセージボックスに『完了』と表示する」程度のシンプルなマクロから始め、コードをVBE(エディタ)に貼り付けて実行する一連の流れを説明している男性
目次

初めてのマクロ生成

本章から、本格的にAIを活用したVBAマクロの開発フェーズに入ります。これまでの章で学んだプロンプトエンジニアリングの基礎や関数に関する知識は、すべてこの瞬間のための準備でした。関数では実現できない高度な自動化、例えばファイルの操作や複雑な条件分岐、あるいはメールの自動送信といった処理も、VBAを使えば可能になります。そして、そのVBAコードを書くのはあなたではなく、AIです。あなたは「開発者」として、AIに指示を出し、生成されたコードをExcelに実装し、動作を確認する役割を担います。

本記事では、その最初の一歩として、最もシンプルかつ基本的なマクロである「メッセージボックスに『完了』と表示する」プログラムを作成します。この一見何の役にも立たなそうな小さなプログラムには、VBA開発における重要なエッセンスが凝縮されています。AIへの指示の出し方、生成されたコードのコピー、VBE(Visual Basic Editor)への貼り付け、そして実行と保存。この一連のサイクル(開発フロー)を体験し、確実にマスターすることが、後の複雑な業務自動化アプリを構築するための土台となります。不安を感じる必要はありません。AIという強力なパートナーと共に、未知の領域である「プログラミング」の世界へ足を踏み入れましょう。

AIとVBAの融合:プログラミング知識ゼロからの脱却と「開発者」への第一歩

多くのビジネスパーソンにとって、VBA(Visual Basic for Applications)は高い壁でした。「変数の宣言」「オブジェクト指向」「構文エラー」といった専門用語の羅列に圧倒され、学習を挫折した経験を持つ人も少なくありません。しかし、AIの登場により、その壁は消滅しました。今、私たちが迎えているのは、プログラミング言語を暗記する必要のない新しい開発の時代です。ここで求められる能力は、コードを書く力ではなく、業務を理解し、それを論理的な手順としてAIに伝える「言語化能力」です。

AIにVBAを書かせるということは、単なる手抜きではありません。それは、人間が本来注力すべき「創造的な業務設計」に集中するための進化です。これまでの開発スタイルでは、コードの書き方を調べるのに8割の時間を費やし、実際に動くものを作るのは残りの2割の時間しか割けませんでした。しかし、AIを活用すれば、コード生成は数秒で完了します。その分、あなたは「どのような機能があれば現場が楽になるか」「エラーが起きた時にどう対処すべきか」といった、ツールの品質や運用設計に時間を割くことができるようになります。

この章で目指すのは、あなたが「Excelユーザー」から「開発者」へとマインドセットを切り替えることです。開発者とは、黒い画面にコードを打ち込む人のことだけを指すのではありません。課題を発見し、解決策を定義し、利用可能なリソース(ここではAI)を使ってシステムを構築し、価値を提供する人のことです。これから作成する「メッセージボックスを表示するマクロ」は、その開発者としての最初の成果物となります。たった数行のコードですが、それが動いた瞬間に感じる「自分の指示でコンピュータが動いた」という感覚は、これからの学習における大きな原動力となるはずです。さあ、AIという優秀な部下と共に、自動化の扉を開きましょう。

開発環境の整備:Excelの「開発」タブを表示させVBEの世界へ飛び込む準備

VBAマクロを作成するためには、まずExcelの隠された機能である「開発」タブを表舞台に引き出す必要があります。標準の状態では、Excelのリボン(メニューバー)に「開発」というタブは表示されていません。これは、誤って設定を変更してしまわないようにするためのMicrosoftの配慮ですが、これから開発者となるあなたにとっては必須のツールボックスです。

まず、Excelを起動し、リボンの何もないところで右クリックをして「リボンのユーザー設定」を選択するか、「ファイル」タブから「オプション」を選び、「リボンのユーザー設定」を開きます。画面右側の「メインタブ」の一覧の中に「開発」という項目があり、チェックボックスが空欄になっているはずです。ここにチェックを入れて「OK」をクリックしてください。すると、リボンの中に新しく「開発」タブが出現します。これが、あなたが開発者になった証です。

「開発」タブの中には、「マクロ」「Visual Basic」「挿入」といったボタンが並んでいます。これらは、Excelの裏側にある制御室への入り口です。特に重要なのが、一番左にある「Visual Basic」ボタンです。これをクリック(またはショートカットキーのAlt + F11)すると、これまでのExcelとは全く異なる、無機質でプロフェッショナルな画面が開きます。これがVBE(Visual Basic Editor)です。VBAのコードはすべてこのVBEの中に記述します。最初は見慣れない英語のメニューやウィンドウに戸惑うかもしれませんが、心配はいりません。私たちが使う機能はごく一部です。まずは「開発」タブを表示させ、いつでもVBEを呼び出せる状態にすること。これが、自動化の旅に向けたパッキング(荷造り)の完了を意味します。

VBE(Visual Basic Editor)の解剖図:コードを記述する「標準モジュール」の正体

VBEを開くと、いくつかのウィンドウが表示されますが、開発者が主に操作するのは「プロジェクトエクスプローラー」と「コードウィンドウ」の2つです。画面左側にある「プロジェクトエクスプローラー」は、現在開いているExcelブックやその中のシートをツリー状に表示する管理画面です。ここに、コードの保管場所となる「標準モジュール」を追加していきます。

初心者が最も陥りやすい間違いの一つが、コードを書く場所を間違えることです。VBAには、シートごとの処理を書く「シートモジュール」、ブック全体のイベントを書く「ブックモジュール」、そして汎用的なマクロを書く「標準モジュール」があります。今回のような一般的なマクロを作成する場合は、必ず「標準モジュール」を使用します。VBEのメニューから「挿入」→「標準モジュール」をクリックしてください。すると、プロジェクトエクスプローラーに「Module1」というフォルダが作成され、画面右側に真っ白なエディタ画面(コードウィンドウ)が表示されます。

この真っ白なキャンバスこそが、AIが生成したコードを貼り付ける場所です。AIにコードを書かせると、テキストとしてプログラムが出力されますが、それをExcelが理解できる形にするためには、この標準モジュールという「器」に入れる必要があります。シートモジュール(Sheet1などと書かれている場所)に書いてしまうと、そのシートでしか動かなかったり、意図しないタイミングで実行されたりする原因になります。「マクロを作るなら、まずは標準モジュールを挿入する」。この基本動作を、呼吸をするように自然に行えるようになりましょう。ここが、あなたのアイデアが形になる工房の作業台です。

最初のミッション設定:「完了」メッセージを表示するマクロの意義と設計

今回作成するマクロの要件は極めてシンプルです。「実行すると、画面の中央に小さなウィンドウが現れ、『処理が完了しました』というメッセージとOKボタンを表示する」。たったこれだけのことですが、ここにはプログラミングの基本である「入力」「処理」「出力」のうち、「出力(ユーザーへのフィードバック)」の要素が含まれています。

なぜ最初にメッセージボックスなのか。それは、プログラムが正しく最後まで動作したことを視覚的に確認する最も確実な手段だからです。複雑な計算やデータ操作を行うマクロであっても、処理が終わったのか、それともフリーズしているのかが分からなければ、ユーザーは不安になります。処理の最後に「完了」と表示させることは、ユーザー体験(UX)を向上させるための基本的な作法でもあります。また、このシンプルなマクロを通じて、AIへの指示出しから実行までのフローを、エラーのリスクを最小限に抑えつつ体験できるというメリットもあります。

開発者として、まずはこのシンプルな要件を「設計図」として定義します。 ・目的: マクロの動作確認を行うためのテストプログラムを作成する。 ・機能: メッセージボックスを表示する。 ・表示内容: 「処理が完了しました」というテキスト。 ・アイコン: 情報アイコン(iマーク)を表示する(オプション)。 このように、頭の中でぼんやりと「メッセージを出したい」と思うだけでなく、具体的な挙動を定義することが、AIへの的確な指示につながります。小さなプログラムであっても、しっかりと要件定義を行う癖をつけることが、将来の複雑なシステム開発における成功の鍵となります。

プロンプトエンジニアリングの実践:AIに正確な指示を出すための「型」の作成

要件が固まったら、いよいよAIにコードを書かせるためのプロンプト(指示文)を作成します。ここでは、第2章で学んだプロンプトの「型」を活用します。単に「メッセージを出すマクロを作って」と頼むだけでもAIは答えてくれますが、開発者としては、より品質の高い、メンテナンスしやすいコードを一発で引き出すための指示を心がけるべきです。

以下のテンプレートを使用してプロンプトを作成してみましょう。

#役割
あなたはExcel VBAの専門家です。初心者にも分かりやすく、丁寧なコードを作成してください。

#目的
VBAの動作確認を行うため、メッセージボックスを表示するシンプルなマクロを作成したいです。

#処理の要件
1. マクロを実行すると、メッセージボックスが表示されること。
2. メッセージの本文は「処理が完了しました」とすること。
3. メッセージボックスのタイトルは「完了」とすること。
4. アイコンは「情報(Information)」アイコンを使用すること。

#制約条件
・変数名やプロシージャ名(マクロ名)は、分かりやすい日本語を使用してください。
・コードの各行には、何をしているか解説するコメントを日本語で入れてください。
・「Option Explicit」を記述して、変数の宣言を強制する形式にしてください。

このプロンプトには、いくつかの重要なテクニックが含まれています。まず、「#制約条件」で「日本語の変数名」を指定している点です。通常、プログラミングでは英語の変数名が使われますが、日本人にとっては日本語の方が直感的に意味を理解しやすく、メンテナンス性が向上します。また、「Option Explicit」の指定は、タイプミスによるバグを防ぐためのプロの定石です。このように、AIに対して「何を」だけでなく「どのように」書いてほしいかを明確に伝えることで、教科書通りの模範的なコードではなく、実務に適した使いやすいコードを手に入れることができます。

AI生成コードの解読:SubプロシージャとMsgBox関数の構造を理解する

AIにプロンプトを投げると、瞬時にVBAコードが生成されます。これを右から左へコピペする前に、開発者として最低限、コードの構造を理解しておく必要があります。AIが生成するコードは、概ね以下のような形になるはずです。

Option Explicit

Sub メッセージ表示テスト()
    ' メッセージボックスを表示する処理
    MsgBox "処理が完了しました", vbInformation, "完了"
End Sub

まず、冒頭の Option Explicit は、前述の通り「変数は必ず宣言してから使う」という宣言です。今回は変数を使っていませんが、お守りとして記述されています。 次に、Sub メッセージ表示テスト() から End Sub までが、一つのマクロの塊(プロシージャ)です。「Sub」は「サブルーチン(副プログラム)」の略で、ここから処理が始まり、End Subで終わることを示しています。() の中には引数が入ることがありますが、今回は空っぽです。 そして、核心部分である MsgBox です。これはVBAにあらかじめ用意されている関数で、指定した文字列をウィンドウに表示する命令です。後ろに続く "処理が完了しました" が表示される本文、vbInformation がアイコンの種類、"完了" がウィンドウのタイトルバーに表示される文字です。

AIが生成したコメント(' で始まる行)を読むことで、コードの意味がより明確になります。一言一句を暗記する必要はありませんが、「Subで始まってEnd Subで終わるんだな」「文字はダブルクォーテーション " で囲むんだな」といった基本的なルールを、AIのコードを見ながら感覚的に掴んでいってください。この「読む力」があれば、将来AIが少し間違ったコードを出してきた時にも、違和感に気づけるようになります。

コードの実装プロセス:AIからVBEへのコピー&ペーストと貼り付け位置の正解

生成されたコードを実際にExcelに組み込みます。AIのチャット画面には、コードブロックの右上に「コードをコピーする(Copy code)」というボタンがあるはずです。これをクリックして、コードをクリップボードにコピーします。

次に、先ほど開いたVBEの画面に戻ります。「標準モジュール(Module1)」のコードウィンドウが白く表示されていることを確認し、そこにカーソルを合わせて貼り付け(Ctrl + V)を行います。これで、あなたのExcelファイルの中に、AIが作ったプログラムが移植されました。

ここで一つ注意点があります。もし、標準モジュールに最初から Option Explicit という文字が書かれていた場合、貼り付けによって Option Explicit が2回繰り返されてしまうことがあります。これはエラーの原因になります。一つのモジュール内に Option Explicit は一つだけ、必ず先頭になければなりません。重複している場合は、片方を削除してください。 また、コードが見やすくインデント(字下げ)されているかも確認しましょう。AIは通常きれいに整形してくれますが、貼り付けの際に崩れてしまうこともあります。SubとEnd Subの中身が一段下がっていると、コードの構造が見やすくなります。これで、コードの実装は完了です。いよいよ実行の時です。

マクロの実行と検証:F5キーからボタン作成まで、プログラムを動かす喜び

コードを実行する方法はいくつかあります。最も簡単なのは、VBE画面上で実行する方法です。コードの中(SubとEnd Subの間)にカーソルがある状態で、キーボードの「F5」キーを押すか、ツールバーにある再生ボタン(緑色の三角マーク)をクリックします。 すると、Excelの画面に戻り、画面中央に「処理が完了しました」というメッセージボックスが表示されるはずです。「OK」ボタンを押して閉じましょう。これが、あなたが初めて動かしたマクロです。

実務では、いちいちVBEを開いて実行するのは手間なので、Excelのシート上に実行ボタンを作成します。

1. Excelの画面に戻り、「開発」タブの「挿入」から「ボタン(フォームコントロール)」を選択します。

2. シート上の好きな場所をドラッグしてボタンを描画します。

3. 「マクロの登録」ダイアログが出るので、先ほど作った「メッセージ表示テスト」を選択して「OK」を押します。

4. ボタンの名前を「実行」などに書き換えます。

これで、ボタンをクリックするだけでいつでもマクロが起動するようになりました。また、図形(オートシェイプ)を右クリックして「マクロの登録」を行うことで、おしゃれなデザインのボタンを作ることも可能です。自分の作った仕組みが、ボタン一つで動く快感を味わってください。これは単なるメッセージ表示ですが、このボタンの中身を「請求書作成処理」や「データ集計処理」に書き換えれば、それがそのまま業務アプリになります。

保存形式の落とし穴:「.xlsx」と「.xlsm」の違いとセキュリティリスク

マクロを作成したファイルを保存する際、絶対に避けては通れない重要な分岐点があります。それが「ファイル形式」の選択です。通常のExcelファイルは「.xlsx」という拡張子ですが、この形式はセキュリティ上の理由から、マクロを保存することができません。もし、マクロを書いた状態で「.xlsx」のまま保存しようとすると、Excelは「マクロなしのブックとして保存しますか?」という警告を出します。ここで誤って「はい」を押してしまうと、せっかく書いたVBAコードはすべて消滅します。これは初心者が必ず一度は経験する悲劇です。

マクロを含むファイルを保存する場合は、必ず「Excel マクロ有効ブック (*.xlsm)」という形式を選択してください。拡張子の末尾に「m (macro)」がついているのが目印です。この形式で保存することで、VBAコードがファイル内に保持され、次回開いた時にも利用可能になります。

また、インターネットからダウンロードしたマクロ付きファイルや、メールで送られてきた「.xlsm」ファイルを開くと、Excelは「セキュリティの警告:マクロが無効にされました」という赤いバーを表示することがあります。これはウイルス対策のための機能です。自分が作成したファイル、あるいは信頼できるファイルであると確信できる場合のみ、「コンテンツの有効化」をクリックしてマクロを動く状態にしてください。開発者として、ファイルの拡張子とセキュリティ警告の意味を正しく理解し、安全に管理することは必須のスキルです。

エラーとトラブルシューティング:動かない時の対処法とAIへの再質問テクニック

もし、F5キーを押してもマクロが動かず、英語のエラーメッセージが表示されたらどうすればよいでしょうか。パニックになる必要はありません。エラー画面には「デバッグ」というボタンがありますが、まずは「終了」を押してメッセージを閉じましょう。

エラーが起きた時こそ、AIの出番です。エラーメッセージの内容(例:「コンパイル エラー: 変数が定義されていません」など)と、エラーが発生した箇所(黄色くハイライトされている行)をメモし、それをそのままAIに伝えます。 「先ほどのコードを実行したら、〇〇というエラーが出ました。修正方法を教えてください」 AIは、エラーの原因を瞬時に分析し、「変数名のスペルが間違っていました」や「全角スペースが入っていました」といった原因と共に、修正済みのコードを提示してくれます。

VBAは一文字でも間違っていれば動きません。特に全角と半角の違いや、記号の入力ミスは人間には見つけにくいものです。自分一人で悩まず、すぐにAIに相談する「エラー解決のループ」を回すことが、上達への近道です。エラーは失敗ではなく、AIとの対話を通じて理解を深めるためのイベントだと捉えましょう。

応用へのステップ:メッセージ内容の変更と条件分岐への拡張

無事にメッセージボックスが表示されたら、次は少し応用してみましょう。コードの中の "処理が完了しました" という部分を、自分の好きな言葉に書き換えてみてください。VBEで直接書き換えて実行すれば、すぐに結果が変わります。

さらに、AIに機能追加を依頼してみましょう。 「今のマクロを改造して、実行すると『処理を実行しますか?』とYes/Noで聞き、Yesを押した時だけ『完了しました』と表示し、Noの時は『中止しました』と表示するようにしてください」 このように依頼すると、AIは If...Then...Else という条件分岐を使ったコードを生成してくれます。

Sub 確認付きメッセージ()
    Dim 判定 As Integer
    判定 = MsgBox("処理を実行しますか?", vbYesNo + vbQuestion, "確認")
    
    If 判定 = vbYes Then
        MsgBox "完了しました", vbInformation
    Else
        MsgBox "中止しました", vbExclamation
    End If
End Sub

生成されたコードを見て、「なるほど、Ifを使って条件を分けているのか」と構造を確認してください。単純な一本道から、条件によって道が分かれるプログラムへ。このステップを踏むことで、あなたのマクロは「単なる命令」から、状況判断のできる「プログラム」へと進化します。

小さな成功体験を積み重ねて業務自動化の「開発者」へ

今回作成したマクロは、実務的な価値としては「ゼロ」に近いかもしれません。しかし、開発者としての経験値としては「100」の価値があります。あなたは、自分の意思をAIに伝え、コードを生み出し、それをExcelに実装して動かすという、開発の全工程を完走したからです。

この「小さな成功体験」を積み重ねることが重要です。今日はメッセージボックスでしたが、明日はセルの値を書き換えるマクロ、明後日はシートをコピーするマクロと、できることを一つずつ増やしていけば良いのです。AIがいれば、技術的なハードルはもう存在しません。必要なのは、あなたの「これを自動化したい」という意志と、AIに話しかけるちょっとした勇気だけです。

次からは、いよいよ実務に直結するデータ操作や、繰り返し処理(ループ)といった、VBAの真骨頂とも言える機能に挑戦していきます。しかし、基本となるフローは今回と同じです。「要件を決める」「AIに書かせる」「VBEに貼る」「動かす」。このリズムを忘れずに、さらなる自動化の世界へ進んでいきましょう。あなたはもう、立派なVBA開発者の一員です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次