「マクロって便利そうだけど、プログラミングは無理…」と思っているエンジニアの方、朗報です。
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で動かす手順
- ExcelでAlt + F11を押してVBAエディタを開く
- 左パネルの「VBAProject(ブック名)」を右クリック →「挿入」→「標準モジュール」
- 右側の白いエリアに、ChatGPTが生成したコードを貼り付ける
- 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効率化メディア


