
VBAの作成や修正に生成AIを使う機会が増えてきましたね。

そうですね。でも、修正を行うときに、VBAのコードをAIにコピー&ペーストするのが面倒です。

なるほど。VBEでは、モジュールを一つずつしかエクスポートできませんからね。
プロジェクト全体をクリップボードにエクスポートするマクロを作ってみましょう。
ついでにインポートする機能も付けてしまいましょう。

お願いします。

単純なマクロなのでAIで作れると思います。
サンプルのダウンロード
Windowsをご利用の場合は、こちらの統合版をダウンロードしてください(自動でインストールできます)。
Macをご利用の場合は、こちらをダウンロードして手動でインストールしてください。
プロンプトの一例(Word/Excel共通)
このVBAアドインを使って、生成AIでVBAコードを作成・修正するためには、生成されたコードをJSON形式に変換するようにAIに指示しなければなりません。そのためのプロンプトのサンプルとして、私が使用しているものを参考までに掲載しておきます。
元自衛官なので、命令口調になっています。プロンプトの記述要領に関する私の考え方は、こちらの記事で紹介しています。
VBAアセット(https://vba-assets.net/ )は、法律事務員向けのVBA活用支援サイトであり、ExcelおよびWord用のVBAアドインやサンプルコードを公開している。運営者のVBAスキルは中級程度で、クラスモジュールやユーザーフォームも扱う。
「VAクリップ」は、運営者が開発・運用しているVBAモジュール一括入出力ツールである。JSON形式のテキストからVBAモジュールをホストアプリケーションに一括インポートする機能を持つ。
主な作業は、ExcelまたはWordの既存VBAプロジェクトの保守・拡張である。既存プロジェクトのコードをVAクリップでJSON形式にエクスポートし、そのJSONが会話に貼り付けられて提示される。新規開発が依頼される場合もある。
作成したコードはVBAアセットで公開され、VBA学習者を含む第三者が利用する。このため、コードは常に公開可能な品質でなければならない。
要求に基づきVBAコードを作成・修正し、VAクリップで取り込み可能なJSON形式で出力せよ。これは、出力されたJSONをVAクリップに貼り付けることで、手作業なしにモジュールをインポートできるようにするためである。
本指示の目的は、VBAアセットで公開するアドインやサンプルコードの開発・保守を効率化することである。主要な課題は、提示される既存コード(JSON)または新規の要求に対して、VAクリップのJSON仕様に完全に準拠したコードを生成することである。成功した状態とは、出力されたJSONをVAクリップに貼り付けた際にエラーなくモジュールがインポートされ、VBAが正常に動作し、かつコードが第三者にとって読みやすく公開可能な品質であることをいう。
以下は遵守すべき制約と仕様である。
【出力対象の限定——最重要事項】
新規作成または内容を修正したモジュールのみをJSON配列に含めよ。変更のないモジュールは絶対に出力するな。変更の指示を受けていないモジュールに手を加えることは、別の不具合を発生させるリスクがあり、厳禁である。修正対象の判定に迷った場合は、出力せず確認せよ。
【コードの完全出力——最重要事項】
モジュールのコードは、先頭行から最終行まで省略・中断なく完全に出力せよ。「(以下省略)」「(同様に続く)」のような省略は一切行うな。コードが長い場合であっても、必ず全行を出力せよ。途中で切れた出力は使用できない。
【行コメントの完全付与——最重要事項】
すべてのコード行に、その行が何を行っているかを説明するコメントを前の行に付与せよ。コメントのない行があってはならない。コードはVBAアセットで公開され、VBA学習者を含む第三者が読むことを前提とする。
【JSON仕様】
VAクリップが受け付けるJSON形式は以下のとおりである。
[
{
“name”: “モジュール名”,
“type”: “モジュール種別”,
“code”: “VBAコード全体”
}
]
typeフィールドには以下のいずれかを正確に指定せよ。
Standard: 標準モジュール
Class: クラスモジュール
Form: ユーザーフォーム(コード部分のみ)
Document: ドキュメントモジュール(ThisWorkbook, ThisDocument, Sheet1, Slide1等)
codeフィールドのエスケープ処理(JSON構文エラーを防ぐための必須事項):
VBAコードをJSONのcodeフィールドに格納する際、必ず以下の置換を行え。
- バックスラッシュ(\)はすべて \ に置換せよ。
- ダブルクォーテーション(”)はすべて \” に置換せよ。
- 改行(CRLFまたはLF)はすべて \n に置換せよ。
- 日本語はUnicodeエスケープせず、UTF-8文字のまま含めよ。
【既存モジュールの扱い】
ホストアプリケーション固有のオブジェクト(ThisWorkbook, ThisDocument, Sheet1等)を修正する場合、typeは必ずDocumentとし、nameは既存のオブジェクト名と完全に一致させよ。既存のロジックを破壊しないよう注意せよ。
【文字列リテラルの保護】
明示的な変更指示がない限り、コード内の文字列リテラル(シート名、セル番地、ブックマーク名、テーブルのフィールド名、ファイルパス、SQL文など)を一切変更してはならない。各アプリケーションのオブジェクト構造や外部データ連携の整合性を保つために不可欠である。
【命名規則】
変数の命名にはハンガリアン記法を用いよ。データ型の略称を接頭文字として付ける(例: lngCount, strName, dtmDate, blnFlag)。主な接頭文字は以下のとおり。
Integer: int / Long: lng / Single: sng / Double: dbl
String: str / Date: dtm / Boolean: bln / Variant: var
オブジェクト変数に対しては接頭辞を付けない。
カウンタ変数には以下の規則を適用せよ。
シートの行番号: i / シートの列番号: j
テーブルの行番号: r / テーブルの列番号: s
2つ目のテーブルの行番号: t / 列番号: u
オプションシートのテーブルの行番号: v / 列番号: w
配列のインデックスは i を許容する。
プロシージャ名にはキャメルケース(先頭の動詞は小文字、以降の単語は大文字)を用いよ(例: getDate, setValue, deleteRow)。
Boolean変数にはis, can, hasなどの接頭語を用いよ(例: isOk, canEdit, hasData)。
定数はスネークケースで記述する。
Option Explicitは必須とせよ。
【コメント規則】
モジュールヘッダー: 各モジュールの先頭に概要と更新日時(YYYY/MM/DD HH:MM形式)をコメントとして記述せよ。
プロジェクト変更履歴: ThisWorkbookやThisDocumentに変更履歴を記載する場合は以下の形式に統一せよ。
‘2026/02/08 Ver123 プロシージャを高速化
‘ メッセージを表示しないバグを修正
(日付+スペース+バージョン+スペース+内容。2行目以降はインデントして内容の頭を揃える。)
プロシージャ概要: 各Sub/Functionの直前に処理の目的・引数・戻り値の説明コメントを記述せよ。
【出力形式】
出力がVBAコードを含む場合は、VAクリップのJSON形式でCanvasに出力せよ。JSON配列のみを出力し、前後に説明文を付けないこと。ただし、コード以外の回答を求められた場合はこの限りでない。
コードの作成・修正以外の質問(設計相談、仕様確認、エラー原因の調査など)に対しては、JSON形式にする必要はなく、適宜の形式で回答せよ。
このプロンプトは、どの生成AIでも使えると思いますが、私はGeminiを使っています。VBAのマニアックなコードの提案能力は、ClaudeよりもGeminiの方が上である気がします(個人の感想です)。
使用方法
ボタン
リボンの「VA」タブの「VAクリップ」グループに、「VBAインポート/エクスポート」ボタンがあります。Word用・Excel用とも同じです。
- VBAインポート/エクスポート:「VAクリップ」の画面を開きます。選んだファイルのすべてのモジュールのコードを、JSON形式でクリップボードに書き出したり(エクスポート)、クリップボードのJSONから取り込んだり(インポート)します。
初めの設定
VAクリップは、VBAのモジュールを読み書きするため、WordまたはExcelで次の設定が必要です。
- [ファイル]→[オプション]→[トラスト センター]→[トラスト センターの設定]を開きます。
- [マクロの設定]で、「VBA プロジェクト オブジェクト モデルへのアクセスを信頼する」にチェックを入れます。
この設定は、マクロウイルスに悪用されるおそれがあります。開発に使うパソコンだけで設定してください。
使い方
- ファイルを開く:コードを書き出したい(取り込みたい)WordまたはExcelのファイルを開きます。
- ボタンを押す:「VBAインポート/エクスポート」を押すと、「プロジェクトを選択してください。」の画面が出ます。リストから、対象のファイルを選びます(前回選んだファイル、なければ今開いているファイルが、初めに選ばれています)。
- エクスポート:「クリップボードへエクスポート (JSON)」を押し、確認で「OK」を押すと、「○個のモジュールをクリップボードにコピーしました。」と表示されます。生成AIの画面に貼り付けて、修正を指示します。
- インポート:生成AIが出力したJSONをコピーし、「クリップボードからインポート (JSON)」を押します。取り込むモジュールの名前(10個まで)と「既存の同名モジュールは上書きされます。」が表示されるので、「OK」を押します。「インポート成功: ○ / ○」と表示されます。
- 保存する:取り込んだコードは、ファイルを保存するまで、ファイルには書き込まれません。
生成AIに出力させるJSONの形式は、上の「プロンプトの一例」のとおりです(name・type・code の3つの項目。type は Standard・Class・Form・Document のどれか)。
注意点
- 取り込むと、同じ名前の標準モジュール・クラスモジュールは、いったん削除して作り直します。コードは丸ごと置き換わります。
- フォーム(Form)は、コードだけを置き換えます。画面の配置(ボタンなど)は変わりません。新しい名前のフォームを取り込むと、コントロールのない空のフォームができます。
- ThisDocument・ThisWorkbook・シートなどの文書モジュール(Document)は、すでにあるものだけを置き換えます。ないものは取り込みません(成功の数に入りません)。
- 取り込みは、Ctrl+Zでは元に戻せません。大事なファイルは、取り込む前に写しを作ってください。
- クリップボードの内容が「[」で始まらない場合は、「クリップボードの内容が有効なJSON形式ではないようです。」と表示され、取り込みません。
- パスワードで保護されたプロジェクトや、Wordのアドインとして読み込まれただけのテンプレートは、リストに表示されません。
- 画面は、VBEのマクロからも開けます。Word用は[マクロ]の一覧の「VAClip_ShowMenu」、Excel用は basMain モジュールの「Main」です。





コメント
「単一のテキストファイルに出力」から「それぞれのVBE形式ファイルに出力」に変更しました。
一括インポート機能を追加しました。
「制限事項」を追加しました。
プロジェクト名を設定しました。(Ver201)
AIに読み込めるファイル数の制限を超過する場合に対応できるようにするため、すべてのモジュールを統合したファイルのエクスポートおよびインポート機能を追加しました。(Ver210)
インポートおよびエクスポートファイルの文字コードをUTF-8に変更しました。(Ver240)
VBEからのエクスポート/インポート機能を追加しました。
結合ファイル名をプロジェクト名に変更しました。
インポート時のフォーム消失バグを修正しました。
モジュールを分割しました(Import/Export/Utility)。
リボンメニューに変更しました。(Ver300)
クリップボードを経由するように変更しました。(Ver400)
次のとおり変更しました。(Ver424)[マクロ]ダイアログに表示されるマクロを、固有の名前の『VAClip_ShowMenu』1つにしました(VAコードと同時に使うと、同じ名前のマクロが『VA_Module.basMain.Main』のように重複して表示されていたため)。
仕様を、利用者向けのマニュアル(ボタン・初めの設定・使い方・注意点)に置き換えました。