VBAクッキング⑤ 生成AIにVBAクッキングキットを覚えてもらう ~コードを書くから設計を考えるへ~

前回の記事では、

VBAクッキングキット

を利用して、実際に部品をExcelへ取り込み、呼び出して使う方法を紹介しました。

ここまで学んできたことで、

  • 転記マッピングシート
  • モジュール
  • Function
  • CALL
  • VBAクッキングキット

といった仕組みが少しずつ見えてきたのではないでしょうか。

ただし、

ここで新たな疑問が出てきます。

「結局、生成AIはどこで活用するの?」

ということです。

VBAクッキングの目的は、

コードをたくさん覚えることではありません。

また、

部品をたくさん暗記することでもありません。

目指しているのは、

「やりたいこと」を設計し、生成AIと一緒に業務ツールを作ることです。

そのためにVBAクッキングキットでは、

Excelで利用する部品と同じ内容を、

  • MDファイル
  • Wordファイル

としても提供しています。

生成AIにそれらを読み込ませることで、

人間と生成AIが同じ部品を共有できるようになります。

今回は実際に、

転記マッピングシートの画像を生成AIへ渡し、

どのように業務ツールを作っていくのかを見ていきましょう。

これまでのおさらい

第1回 なぜ生成AIにVBAを書かせても上手くいかないのか

生成AIに聞いただけでは、VBAはうまく作れないケースが多いです。

なぜなら、「設計」が不足しているからです。

料理で言えば、レシピがない状態で料理を作ろうとしているのと同じです

第2回 転記マッピングシートパターン

実は、事前にマッピング表を用意しておけば、

コードを変更しなくても設定だけで対応できます。

第3回 なぜ短いコードで動くのか?~はじめての部品化~

CALLや関数などの、短いコードで他の複数コードを呼び出す仕組みを体感して頂きました。

第4回 VBAクッキングキットを導入してみよう

複数の部品コードが詰まったBASファイルをエクセルにインポートしました。

今回の記事では、生成AIにもファイルを読み込ませます。

なぜ生成AIに読ませるのか

今、エクセルファイルでは部品を呼び出せるようになっています。

ただし、部品を呼び出しながらコードを組み立てるのは、未経験者の方には難しいと思います。

しかも、生成AIにコードの書き方を聞いても、部品の事は全く考慮されていません。

ですので、生成AIにもMDファイル、もしくはWORDファイルを読み込ませておきます。

こうしておけば、毎回コードの細かい仕様を説明する必要はありません。

やりたい処理パターンだけを伝えれば、生成AIが利用する部品を選択してくれます。

MDファイルを読み込む

生成AIにアップロード

使用する生成AIはChatGPT、CopilotあるいはClaude Codeでもいいです。

生成AIにMDファイル、もしくはWORDファイルを下の画像のように読み込みましょう!

転記処理用テストデータの作成・準備

詳細な転記マッピング表の作り方は、第2回を参照してください。

マッピング表の列の順番は正確に再現してください。

なお、サンプルファイルも添付しますので、そちらも参考にしてください。

転記処理用コードを依頼

今回、書きたいコードはマッピング表をもとに転記処理を行うVBAコードを書くことです。

上の画像のように、マッピング表のスクショもアップロードしましょう!

以下が実際の依頼文です。

アップロードした画像はマッピングという名称のシートの画像です。画像内の表はマッピング表であり、転記元と転記先が記してあります。このマッピング表を基に、転記処理を行うVBAコードを書いてください。

依頼する際の注意点

【重要】ここだけは読んでください

マッピング表の範囲が転記用部品の引数(材料)になります。

スクショ画像内には開始行・開始列・終了行・終了列が含まれるようにしましょう。

シート名の表現には注意しましょう

例えば、実際のシート名が「マッピング」の場合を考えてみましょう。

「マッピングシート」と表現すると、生成AIは「マッピングシート」という名前のシートだと解釈する可能性があります。

そのため、

・マッピングという名称のシート

・シート名:マッピング

のように明確に表現してください。

ちなみに、以下が、今回出力したコードです。(テスト済み)

出力コード

Sub 大本_セル転記()

    Dim errNum As Long
    Dim errDesc As String

    On Error GoTo MyError

    セル転記実行

    Exit Sub

MyError:

    errNum = Err.Number
    errDesc = Err.Description

    If errNum - vbObjectError >= 1000 _
    And errNum - vbObjectError < 2000 Then

        MsgBox "エラー番号 " & _
               (errNum - vbObjectError) & vbCrLf & _
               errDesc

    Else

        MsgBox "VBAエラー番号 " & _
               errNum & vbCrLf & _
               errDesc

    End If

End Sub

Sub セル転記実行()

    Dim rngMap As Range

    'マッピング表取得
    Set rngMap = 部品_範囲設定_行可変( _
                    ThisWorkbook, _
                    "マッピング", _
                    2, _
                    1, _
                    7, _
                    2)

    If rngMap Is Nothing Then
        MsgBox "マッピング表にデータがありません"
        Exit Sub
    End If

    '転記実行
    If 部品_転記_セル単位( _
            ThisWorkbook, _
            ThisWorkbook, _
            rngMap, _
            2, _
            3, _
            4, _
            5, _
            6, _
            7) = False Then

        MsgBox "転記に失敗しました"
        Exit Sub

    End If

    MsgBox "転記が完了しました"

End Sub

出力されるコードを使う際の注意点

名前の重複

以下の画像のようなエラーメッセージが出ることがあります。

この場合、同じ部品名の部品がファイル内に重複している可能性があります。こちらはどちらかを削除してください。

もしくは部品名の前に、「Module名」+「.」を付けてみてください。

部品名の選択(今回のケース)

インポートしたBASファイル内に、似たような部品があります

部品_範囲設定_固定

部品_範囲設定_行可変

指定しなければ、恐らく「部品_範囲設定_行可変」の方が使われます。

出力されるプロシージャー数

生成AIからは2つのプロシージャーが出力される可能性が高いです。

1.呼び出し用プロシージャー(2を呼び出す)

2.部品を含むプロシージャー(1に呼び出される)

1の方にはエラーが起こった時のための制御用のコード(On Error)が含まれています。

*On Errorについては別の記事で詳細を解説します。

Sub 大本_セル転記()

    Dim errNum As Long
    Dim errDesc As String

    On Error GoTo MyError

    セル転記実行

    Exit Sub

*上記は全コードではありません

なぜ2つのプロシージャーを作るのか

これは後々、設計をしやすくするためです。

料理で考えると「材料を切りそろえる」「炒める」「煮込む」「盛り付ける」などの複数工程があります。

その複数工程を人間が制御するわけですが、1のプロシージャーは複数工程が作成されていくことを想定した「制御」

用のプロシージャーです。

もし工程に応じて、プロシージャーを追加したら制御用のプロシージャーからCALLで呼び出せばいいのです。

ただ今回の記事では、2の部品が含まれたプロシージャーだけでも事が足ります。

実行ボタン

作成したコードを実行する際は、ワークシートにボタンを追加しましょう!

まず、上の画像の「開発タブ」⇒「挿入」⇒「ボタン(一番左上)から作成します。

次に、実際にボタンを作成する際は、マクロ名(プロシージャー名)を紐づけましょう!

(補足)

もし、以下の画像のように、黄色のマークが出て処理が止まった場合は、リセットボタンを押してください。

生成AIは何を考えているのか

実は生成AIはただコードを書いているわけではありません。

MDファイル(WORDファイル)内には、部品のコードだけでなく、以下の内容も含まれています。

  • 部品間の依存関係(関連性)やシートとの依存関係(関連性)
  • 前提条件
  • エラー処理の考え方
  • 禁止事項他

これらの情報を踏まえ、以下の流れでコードを生成します。

生成AIは
ゼロからコードを書いているわけではありません

マッピング表を読み

利用できる部品を選び

引数を決定し

コードを組み立てています

つまり、ただコードをやみくもに考えるのではなく、部品間やシート間の設計を考慮してコードを書いています。

ここが今回の記事の一番のポイントです。

VBAクッキングの本当の目的

このシリーズは、VBAを書ける人を育てるのが目的ではありません。

業務改善のアイデアを
生成AIと一緒に実現できる人を増やしたい。

そのために、

設計

↓

パターン

↓

部品

↓

生成AI

という順番で紹介してきました。

ここで今回の記事の内容を振り返ってみてください。

全くコードを書いていないですよね。

どちらかというと、マッピング表を設定するのが大変だったと思います。

つまり、設計の方に重点を置いていたということです。

逆に人間が設計をしていれば、生成AIも有効なコードを書きやすいです。

次のシリーズ予告

今回、生成AIと部品を共有することで、
設計からコード生成までを体験しました。

VBAクッキングの目的は、
コードを書くことではありません。

設計を考え、
生成AIと協力しながら業務改善を進めることです。

次回からは、
実際の業務改善で使えるレシピ(パターン)を紹介していきます。

🍳 VBAクッキングシリーズ
設計 → パターン → 部品 → 生成AI
生成AI時代のExcel業務改善レシピ
VBAを暗記するのではなく、 業務改善の仕組みを設計し、 生成AIと協力しながらツールを作るためのシリーズです。
🍳 VBAクッキング記事一覧を見る

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です