AIでコード自動生成|ChatGPT・LM Studio・OpenCodeでVBAをノーコード生成してExcel業務を自動化する方法
ExcelのVBA(マクロ)を使えば、日々のデータ集計や報告書作成を自動化できます。しかし、「プログラミングがわからない」「コードを書くのが怖い」——そんな現場のハードルを、AIが取り払います。
ChatGPTなどのAIに「どんな処理をしたいか」を日本語で伝えるだけで、VBAコードを自動生成できます。プログラミング知識ゼロでも、AIに聞くだけでマクロが完成するのです。
今はChatGPTだけでなく、LM StudioやOpenCodeなどのAIエージェントを使って、VBAファイルを直接作成することもできます。特にOpenCodeは、AIが考えながらコードを書き、その場で実行して結果を確認できるため、より高度な自動化が可能です。
AIがVBAを書いてくれる時代
従来のVBA学習は「本を買う」「サイトで調べる」「試行錯誤する」——時間がかかりました。しかし、AIを使えば、欲しい機能を自然言語で伝えるだけで、すぐにコードが返ってきます。
ChatGPTでコードを生成してコピーする方法が一般的ですが、OpenCode(オープンコード)を使えば、AIが直接VBAファイルを作成・実行してより高度な自動化が可能です。
OpenCodeでVBAを生成するメリット
- コードの自動実行:AIが生成したコードをその場でテストし、結果を確認
- ファイル直接作成:VBAファイル(.bas)を自動で生成
- エラー自動修正:実行時にエラーが出ると、AIが自動で修正
- 対話型開発:「もっと速くして」「この部分を変えて」と指示できる
OpenCodeを使ったVBA生成の流れ
- OpenCodeを起動(
opencodeコマンドまたはGUI) - 「ExcelのVBAで、Sheet1のデータを品名別に集計してSheet2に出力するコードを書いて」と指示
- AIがコードを生成し、自動で.basファイルに保存
- Excelでインポートして実行
OpenCodeは無料で使えるため、まずは試してみてはいかがでしょうか。
たとえば:
- 「複数のシートを1つにまとめて」→ 結合マクロが即座に完成
- 「データを指定した条件で抽出して」→ フィルタリングマクロが完成
- 「グラフを自動で作成して」→ グラフ生成マクロが完成
AIは24時間使えるため、「覚えないといけない」というストレスから解放されます。
必要な環境
- Excel:Windows版(2016以降推奨。Mac版は一部機能制限あり)
- AIツール:ChatGPT、Claude、Gemini等(無料プランで十分)
- Chrome等のブラウザ:AIとの対話用
AIにVBAコードを生成させる方法
1. やりたいことを具体的に伝える
AIは「ふわっとした指示」が苦手です。「何を」「どこから」「どうしたいか」を具体的に書きましょう。
悪い例:「Excelを自動化したい」
良い例:「Sheet1のA列に日付、B列に品名、C列に数量があります。これを品名ごとに集計してSheet2にまとめるVBAコードを書いてください」
2. 実際のプロンプト例
以下のように、具体的な情報を伝えます:
以下の条件でVBAコードを作成してください。
【処理内容】
Sheet1のA列に日付(2026/01/01〜2026/12/31)、
B列に品名、C列に数量が入力されています。
これを品名ごとに集計してSheet2にまとめてください。
【条件】
・Sheet2のA列に品名、B列に合計数量を出力
・品名は重複なしで昇順に並べる
・データがない場合は「データなし」と表示
【出力形式】
VBAコードをマークダウンで出力してください
3. AIからの回答をVBAエディタにコピー
AIが生成したコードをコピーし、Excelで「Alt + F11」→「挿入」→「標準モジュール」に貼り付けて実行します。
生成されたコード例
AIが上記のプロンプトに応答して生成するコードのイメージ:
Sub 品名別集計()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim dict As Object
Dim lastRow As Long, i As Long
Dim 品名 As String, 数量 As Long
Dim key As Variant
Dim outputRow As Long
Set ws1 = ThisWorkbook.Sheets("Sheet1")
Set ws2 = ThisWorkbook.Sheets("Sheet2")
' Sheet2をクリア
ws2.Cells.ClearContents
' 辞書オブジェクトを作成(品名ごとの数量を集計)
Set dict = CreateObject("Scripting.Dictionary")
' 最終行を取得
lastRow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row
' データがない場合
If lastRow <= 1 Then
ws2.Range("A1").Value = "データなし"
Exit Sub
End If
' データを品名ごとに集計
For i = 2 To lastRow
品名 = ws1.Cells(i, 2).Value
数量 = ws1.Cells(i, 3).Value
If 品名 <> "" And IsNumeric(数量) Then
If dict.exists(品名) Then
dict(品名) = dict(品名) + 数量
Else
dict.Add 品名, 数量
End If
End If
Next i
' 結果をSheet2に出力
ws2.Range("A1").Value = "品名"
ws2.Range("B1").Value = "合計数量"
outputRow = 2
For Each key In dict.keys
ws2.Cells(outputRow, 1).Value = key
ws2.Cells(outputRow, 2).Value = dict(key)
outputRow = outputRow + 1
Next key
MsgBox "集計が完了しました!品名数: " & dict.Count
End Sub
よくあるトラブルと対処
「エラーが出る」場合
- 「コンパイルエラー」:コード内の日本語表記が原因の場合。AIに「日本語の変数名を英字に直して」と依頼
- 「オブジェクト定義のエラー」:シート名が違う可能性。生成されたコードのシート名を確認して修正
- 「配列の範囲外」:最終行の取得が正しくない場合。「最終行の取得方法を変えて」と依頼
エラーが出たら、エラー内容をそのままAIに貼り付けましょう。「このエラーの原因と修正方法を教えて」と聞けば、解決してくれます。
「思った通りに動かない」場合
プロンプトが具体的でないことが多いです。「もっと詳しく」情報を追加しましょう。
追加情報の例:
- データの開始行(1行目はヘッダーか、2行目からか)
- 空白行があるかどうか
- 日付の形式(yyyy/mm/dd等)
- 出力先のシート名とセル番地
現場で実践!5つのケーススタディ
ケース1:月次報告書の自動作成
【プロンプト】
各部署から提出されたExcelファイル(部署別シート)を
1つの集計シートにまとめるVBAコードを書いてください。
【条件】
・Sheet名が部署名(営業部、製造部、管理部)
・各シートのA列に日付、B列に品名、C列に金額
・集計シートには全部署のデータを結合
・集計シートの最終行に合計金額を表示
ケース2:複数のファイルからデータを収集
【プロンプト】
「C:\報告\」フォルダ内の全Excelファイルから、
Sheet1のA1:C100のデータを収集して、
1つのファイルにまとめるVBAコードを書いてください。
【条件】
・ファイル名は「20260101_営業部.xlsx」形式
・収集先のファイル名は「集計_202609.xlsx」
・既存データの下に追記する形式
ケース3:条件付き書式とグラフの自動生成
【プロンプト】
売上データから、前月比が10%以上減少した項目を
赤色で強調し、グラフを作成するVBAコードを書いてください。
【条件】
・データ範囲:Sheet1のA1:B12(1月〜12月)
・グラフの種類:折れ線グラフ
・グラフのタイトル:「月別売上推移」
ケース4:メール送信の自動化
【プロンプト】
Outlook経由で、Sheet1に登録された宛先一覧に
PDF添付で一斉メールを送信するVBAコードを書いてください。
【条件】
・宛先、件名、本文は各セルにPDFは「C:\\
ケース5:データの重複チェック
【プロンプト】
Sheet1のA列(社員番号)とSheet2のA列(社員番号)を
比較して、一致するデータの行を黄色で強調する
VBAコードを書いてください。
【条件】
・データがない場合はメッセージボックスで通知
・強調色はRGB(255, 255, 0)
AIにコードを改善させるテクニック
1. 「このコードを速くして」
生成されたコードが遅い場合、AIに最適化を頼めます。
【プロンプト】
生成されたコードの処理速度を速くしてください。
・ScreenUpdatingをFalseにする
・配列を使って一括処理する
・不必要なループを削除する
2. 「エラーハンドリングを追加して」
【プロンプト】
以下のコードにエラーハンドリングを追加してください。
・エラー発生時にメッセージボックスで通知
・処理を安全に終了する
3. 「このコードの仕組みを解説して」
AIに生成させたコードの意味がわからない場合、解説を求めましょう。
【プロンプト】
以下のVBAコードの各行の処理内容を
コメントで追加してください。
セキュリティと注意点
マクロの有効化
AI生成コードを実行するには、Excelでマクロを有効にする必要があります。
- Excelを起動し、「ファイル」→「オプション」をクリック
- 「セキュリティーセンター」→「セキュリティーの設定」
- 「マクロの設定」で「すべてのマクロを有効にする」を選択(一時)
- または、ファイルを「マクロ有効ブック(.xlsm)」として保存
実行前の確認
生成されたコードをそのまま実行する前に、必ず以下の点を確認してください。
- ファイルのバックアップ:元のファイルをコピーしておく
- 処理対象の範囲:意図しないシートやセルを変更しないか
- 外部ファイルの参照:フォルダパスやファイル名が正しいか
- メール送信機能:誤送信のリスクがある場合は確認画面を追加
まとめ
AIを使えば、VBAプログラミングのハードルは劇的に下がります。「プログラミングがわからない」と諦めていた現場の定型作業も、AIに聞くだけで自動化できます。
まずは小さな一歩から——「この作業が自動化できないか?」と気づいたら、AIに聞いてみましょう。AIは24時間あなたのプログラマーです。
慣れてきたら、生成されたコードを少しずつ改造して、自分の業務に最適なカスタマイズも可能です。AIと協力して、現場の生産性を高めましょう。
出典・参考
- ChatGPT(OpenAI)
- Claude(Anthropic)
- Excel VBA リファレンス(Microsoft)


コメント