VBAクッキング④ VBAクッキングキットを導入してみよう

前回の記事では、

  • モジュール
  • プロシージャー
  • Function
  • CALL

を使って、部品化の基礎を学びました。

実際にコードを書いてみることで、

「よく使う処理を再利用する」

という考え方もイメージできたのではないでしょうか。

しかし、

実際の業務で使用するツールを作るためには、

  • 最終行取得
  • シート存在チェック
  • 転記処理
  • マスタ検索

などを毎回自分で作るのは大変です。

そこで今回使用するのが、

「VBAクッキングキット」

です。

VBAクッキングキットは、私が実際の業務で繰り返し利用している部品をまとめたセットです。

料理で例えるなら、

材料の下ごしらえまで終わっている状態です。

カップラーメンで言えば、

すでに麺とスープが入っていて、

あとはお湯を注ぐだけの状態とも言えます。

今回は、

実際にVBAクッキングキットをExcelへ取り込み、

部品を呼び出して動かしてみましょう。

VBAクッキングキットとは

これまで紹介してきた部品は辞書の形で一覧にしてあります。

こちらのVBA部品辞書を実際に活用できるようにしたのが、VBAクッキングキットです。

・BASファイル ⇒エクセルファイルに読み込み

・MDファイル、もしくはWORDファイル ⇒ChatGPTやCopilotに読み込み

ファイル形式は違えど、同じ内容を生成AIと共有することで、生成AIとのコミュニケーションの精度を向上させることができます。

やりたいことがまだ「ぼんやり」している状態でも、、生成AIに「こんなことをやりたいけど、使えそうな部品を教えて」と伝えると部品の一覧がでてきます。

生成AIが出力した部品の一覧を見ていると、具体的なイメージが湧いてくると思います。

以下が実際のVBAクッキングキットです。ぜひダウンロードしてください

尚、各ファイルに含まれる部品や内容は一部とさせて頂いておりますので、予めご了承ください

*もし、全体網羅版が欲しいという方は直接ご連絡ください ⇒問い合わせ先

BASをインポートする(経験者は飛ばし可)

前回の記事で作成して頂いた標準モジュールの内容は、別ファイルからインポートして設定することができます。

Visual Basic画面を開いてみてください。

そして、標準モジュールの箇所を右クリックすると「ファイルのインポート」と出てくるはずです。

こちらをクリックすると、インポートするファイルを指定することができます。

そして、BASファイルをインポートすると下の画像の状態になります。

これで、モジュール内の各部品を呼び出せる状態になります。

部品を呼び出してみる

モジュール構成(補足)

できたら、インポートしたモジュールとは別のモジュールを追加してみてください。

ちなみに、モジュールの構成は「部品側」「呼び出し側」という風に分けておくと便利です。

呼び出しプロシージャーの作成

プロシージャー作成

試しに、最終行(行位置)を取得する部品を呼び出して使用してみましょう!

まずは、ファイル内のどこかのシートには何か入力しておきましょう(R1C1形式にしておくのを忘れずに)

上の画像であれば、2列目で最終行を取得すると「5」になります。

では、

別に追加したモジュールに以下のコードを貼りましょう!

Sub TEST()

 Dim lastRow As Long '変数:最終行
 
 lastRow=

End Sub

ちなみに、上のコードを貼ると、下の画像のようにエラーになっているはずです。

ところで、

上の画像内に「Dim lastRow As Long ‘変数:最終行」とありますが、

この変数とはなんだ??と思われた方もいると思います。

変数については次回、詳細に解説します。

この場では、値を入れる「箱(ここではlastRow)」だと思ってください。

*参考:Dim X As LongでXは整数が入る箱だと宣言します。

なお、

今回は理解することよりも、「部品を呼び出して実行する」ことを目的にしています。

分からない用語が出てきても、まずはそのまま読み進めてください。

部品の設置

ここからlastRow=の右側を埋めてエラーを解消します。

上の画像のように「モジュール名(御自身で作成したモジュール名)」+「.(ピリオド」を入力してください。

*私の好みで、Module_Partsとしています。Partsでも部品でも大丈夫です

*モジュール名+.でなくても部品は機能します

ここから複数の候補から「部品_最終行取得」を選択してください。

引数の設定

部品_最終行取得の右に、「(」を入力すると、下のGIF動画のように色々と表示されます。

これは、この部品には材料が3つ必要だということです。

部品化とは、完成した部品をそのまま使うことではありません。

下の画像のように、料理と同じで、部品にも必要な材料(引数)があるということです。

引数の詳細(既に理解している方は飛ばして頂くことは可能です)

材料1:vWb(ファイル形式) ⇒ThisWorkbook(ほぼ定番です)

*ThisWorkbook⇒VBAコードを動かしているファイルの指定の仕方(決められている指定の仕方です)。別のファイルを操作する時は、別のファイルを指定します。

材料2:vSheetName(文字列形式) ⇒最終行を取得するシートの名称

材料3:vColNum(整数形式) ⇒最終行を取得する列位置

細かくは今、覚える必要はありませんし、生成AIでコードを書くことを考えています

ただ、今の段階で「概念」に触れておくと後々便利です。

部品に必要な材料は、正式には「引数」といいます。

カップラーメンのお湯やスープのようなものだと思ってください。

ワークシート関数でも実は引数を使っています。

=SUM(合計範囲)

上記の「合計範囲」が引数です。これは引数が1つ必要なパターンです。

さて、本題に戻しましょう!

以下のように部品の引数を設定しましょう!(あくまで下の画像はサンプルです。ご自身のファイルの状況に合わせてください)

lastRow = Module_Parts.部品_最終行取得(ThisWorkbook, “Sheet1”, 2)

2番目の引数はシート名を指定しますが、文字列形式なので””の中にシート名を指定します。

部品の実行

「lastRow=部品」まで完成したら、「MsgBox lastRow」で取得した最終行の位置をメッセージで表示しましょう!

Sub TEST()

 Dim lastRow As Long '変数:最終行
 
 lastRow = Module_Parts.部品_最終行取得(ThisWorkbook, "Sheet1", 2)
 
 MsgBox lastRow

End Sub

上の内容まで完成したら、下の画像のように「実行ボタン:▶」を押しましょう

すると、最終行の位置が表示されます。

部品一覧の見方

各部品の詳細は「VBA部品一覧」のページにまとめています。

上の画像の「日本語名」をクリックすると、部品の詳細情報を見ることができます。

前述の引数もこちらで確認できます。

こちらの部品ページでは、BASファイルもダウンロードできます。

もし、BASファイルをダウンロードせずに直接、モジュールに部品のコードを貼りたいという方は「全コード」をご利用ください。

<まとめ>

今回は、

VBAクッキングキット

を実際にExcelへ取り込み、

部品を呼び出して利用する方法を紹介しました。

特に、

BASファイルをインポートする

↓

部品を選択する

↓

必要な材料(引数)を設定する

↓

実行する

という流れを体験していただきました。

ここで覚えていただきたいのは、

「全部のコードを書く必要はない」

ということです。

VBAクッキングでは、

よく使う処理を部品化し、

必要な材料だけ渡して再利用します。

これは前回学んだ

Function

や

CALL

の考え方を実際の業務ツール作成へ応用している形です。

なお、

今回登場した

  • 変数
  • 引数
  • ThisWorkbook

などは、まだ詳しく理解できなくても問題ありません。

まずは、

「部品を呼び出せる」

ことを体験してください。

次回はいよいよ、

VBAクッキングキットに含まれる

MDファイル

と

Wordファイル

を利用して、

生成AIとVBA部品を連携させる方法を紹介します。

生成AIに部品の存在を覚えてもらうことで、

「コードを書く」から

「部品を組み合わせて設計する」

へ発想を変えていきましょう。

コメントを残す

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