ChatGPTでExcel VBAを自動生成する文書【設計文変報告8300c】

設計業務の効率化Tips

「マクロって便利そうだけど、プログラミングは無理…」と思っているエンジニアの方、朗報です。

ChatGPTがあれば、コードを書けなくてもVBAマクロが作れます。

私もSolidWorksのVBAマクロを作るまで、プログラミングはほぼ未経験でした。それでも今では、部品表の整形・PDF一括出力・工程表の自動生成など、設計業務の反復作業をマクロで自動化しています。その経験をもとに、設計者目線で「最短でVBAを動かすまで」を解説します。

📋 この記事でわかること

  • ChatGPTへのVBA依頼プロンプトの書き方
  • 生成したコードをExcelに貼り付けて動かす手順
  • エラーが出たときにChatGPTで直してもらう方法
  • 設計者がすぐ使える実用VBAコード3選

なぜ「コードを書けない設計者」にVBAが必要なのか

設計業務で毎週繰り返している作業を思い浮かべてください。部品表の整形、図面番号の採番、工程管理表への転記……これらは1回あたり30分でも、月20回やれば10時間が消えています。

VBAマクロにすれば、ボタン1つで終わる。しかもExcelがあれば動く。サーバーも専用ソフトも不要です。

唯一のハードル「コードが書けない」を、ChatGPTが解決してくれます。

Step 1:ChatGPTへのVBA依頼プロンプトの書き方

ポイントは「Excelの状態」「やりたいこと」「出力形式」を具体的に伝えることです。

❌ NG プロンプト(あいまいすぎる)

ExcelのマクロをVBAで作ってください。

✅ OK プロンプト(具体的)

Excel VBAのマクロを作成してください。
【シートの状態】
・Sheet1に部品表があります
・A列:品番、B列:品名、C列:材質、D列:数量、E列:単価
【やりたいこと】
・D列(数量)×E列(単価)を計算してF列(金額)に入力
・F列の合計をF列の最終行の下に表示
・数量が空欄の行はスキップする
【その他】
・Excel 2021で動作すること
・プログラミング初心者なので各行にコメントをつけてください

これだけ伝えれば、そのまま動くコードが返ってきます。

💡 ChatGPT Plus(有料版)推奨:無料版でもVBA生成は可能ですが、有料版(GPT-4o)のほうがコードの精度が明らかに上です。設計業務での活用を本気で考えるなら月20ドルの価値はあります。

Step 2:生成したコードをExcelで動かす手順

  1. ExcelでAlt + F11を押してVBAエディタを開く
  2. 左パネルの「VBAProject(ブック名)」を右クリック →「挿入」→「標準モジュール」
  3. 右側の白いエリアに、ChatGPTが生成したコードを貼り付ける
  4. F5キーで実行(または「実行」メニュー →「Sub/ユーザーフォームの実行」)

✅ マクロを有効にする設定(初回のみ):
ファイル → オプション → セキュリティセンター → セキュリティセンターの設定 → マクロの設定 → 「すべてのマクロを有効にする」を選択。
社内PCで制限がある場合はIT部門に確認してください。

Step 3:エラーが出たときの直し方

エラーが出ても焦らないでください。ChatGPTに以下のように投げるだけです。

エラー修正プロンプト

先ほどのコードを実行したところ、以下のエラーが出ました。修正してください。
【エラーメッセージ】
実行時エラー ‘1004’: アプリケーション定義またはオブジェクト定義のエラーです。
【エラーが出た行(黄色くハイライトされた行)】
Range(“F” & lastRow + 1).Value = Application.Sum(Range(“F2:F” & lastRow))
【状況】
データが入っているのはSheet1で、2行目からデータが始まっています。

エラーメッセージとハイライトされた行をそのまま貼り付けるだけで、原因と修正版コードを返してくれます。これだけでエラーの80%は解決できます。

実務で即使えるVBAコード3選

①部品表の空白行を削除して番号を振り直す

Sub 部品表整形()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    Set ws = ThisWorkbook.Sheets("Sheet1") ' シート名を変更してください
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 空白行を下から削除(上から削除すると行番号がずれるため)
    For i = lastRow To 2 Step -1
        If ws.Cells(i, "A").Value = "" Then
            ws.Rows(i).Delete
        End If
    Next i
    
    ' A列に連番を振り直す
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    For i = 2 To lastRow
        ws.Cells(i, "A").Value = i - 1
    Next i
    
    MsgBox "整形完了!" & lastRow - 1 & "件の部品が処理されました。"
End Sub

②シートを月別に自動作成する

Sub 月別シート作成()
    Dim i As Integer
    Dim sheetName As String
    
    ' 1月〜12月のシートを作成
    For i = 1 To 12
        sheetName = i & "月"
        
        ' 同名シートが存在する場合はスキップ
        On Error Resume Next
        If Worksheets(sheetName) Is Nothing Then
            Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sheetName
        End If
        On Error GoTo 0
    Next i
    
    MsgBox "12ヶ月分のシートを作成しました。"
End Sub

📖 実話コラム

「初めてVBAが動いた日の感動は今も忘れられない」

最初に作ったマクロは、部品表のフォーマット整形でした。ChatGPTに仕様を伝えて生成されたコードを貼り付けて、F5を押した瞬間——エラー。

エラーメッセージをそのままChatGPTに投げると「この行が問題です」と即答。修正コードを貼り直してF5——今度は動いた。

30分かかっていた作業が3秒で終わった。その瞬間の「え、これ毎週やってたの…?」という感覚は、今でも笑い話として使えます。プログラミングは書けなくていい。仕様を伝える力さえあれば、あとはChatGPTが何とかしてくれます。

VBA生成の精度をさらに上げたい方へ

ChatGPTに「より良いコードを出してもらう」には、プロンプトの構造を理解していることが重要です。

「なんとなく使える」から「意図通りに動かせる」へのステップは、AIの仕組みを少し知るだけで一気に縮まります。

UDEMY COURSE

プロンプトエンジニアリング
本質習得講座

ChatGPT / Claude / Gemini ——どのAIでも使える「指示設計」の骨格を学ぶ

この講座で身につくこと

  • なぜそのプロンプトで出力が変わるのか、原理から理解できる
  • 役割・条件・出力形式の正しい指定方法(AutoLISP・VBA・Python全対応)
  • エラーが出たとき、自分でデバッグ・改善できるようになる
  • ChatGPTが変わっても、新しいAIが出ても使い続けられるスキル


コース詳細・受講登録はこちら →

※ 頻繁にセール(最大90%OFF)が実施されます

※ セール時は1,500円前後で受講可能です


CADHACK — 設計者のAI・CAD効率化メディア

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