top of page

​タグ一覧

配列処理(73)

階層化フォーム(33)

ファイル操作(28)

開発事例(22)

シート・セル操作(20)

図形操作(15)

ユーザーフォーム(10)

コード自動生成(10)

設計思想(10)

講座実施報告(10)

文字列操作(8)

数学(7)

開発効率化(6)

GAS(5)

アニメーション(5)

技術解説(4)

イミディエイトウィンドウ(4)

Googleスプレッドシート(4)

副業(4)

クリップボード(4)

条件付き書式(4)

その他(4)

OneDrive(3)

イベントプロシージャ(3)

ココナラ(3)

小説(3)

HTML(3)

JavaScript(3)

Enum(2)

PDF(2)

フリーランス(2)

リスキリング(2)

Outlook(2)

介護(2)

Discord(2)

シフト表(2)

LookerStudio(2)

日報(2)

カレンダー(2)

罫線(2)

パズル(2)

小ネタ(2)

コード解説(2)

クラスモジュール(2)

Antigravity(2)

Webアプリ(2)

ステータスバー(1)

コード解析(1)

バックアップ(1)

可変長引数配列(1)

ブック処理(1)

スクレイピング(1)

スプレッドシート(1)

coconala(1)

リボン登録マクロ(1)

QRコード(1)

実行予約(1)

給与計算(1)

VBA不使用(1)

リボン(1)

超勉強会(1)

スピログラフ(1)

図名描写(1)

連想配列(1)

溶接ロボット(1)

保育士(1)

楽天市場(1)

経理(1)

医療(1)

文書作成(1)

発注書(1)

公開ツール(1)

ショートカット(1)

WebAPI(1)

色操作(1)

スーパー開発ショートカット(1)

ライブラリ処理(1)

放課後等デイサービス(1)

児童福祉支援(1)

学校(1)

UI(1)

CAD(1)

カーソル操作(1)

チェックボックス(1)

PowerShell(1)

VBA LT会「自作ライブラリ勉強会」登壇資料

更新日:2025年10月25日

概要

 Discordコミュニティ 「Excel-Fun.xls*」にて2025年10月25日に開催されたLT会「自作ライブラリ勉強会」にて登壇した内容を本ページでまとめておきます。



【PR】Discordコミュニティ 「Excel-Fun.xls*」について

 Excel関係、VBA関係の技術コミュニティです。


 Excel-Fun.xls*のYouTubeチャンネル⇒https://www.youtube.com/@excel-fun-xls


登壇内容

 「ライブラリ」とは?

 今回のLT会のテーマの「ライブラリ」について簡単な筆者の解釈としては「過去に記述したコードなどを部品として使いまわすために保存しておく」ものとおいております。

 ちなみに細かい定義からするとライブラリは「自作ライブラリ」と「一般公開ライブラリ」の二種類あるとして、今回は「自作ライブラリ」に関しての説明とします。

 個人的主観ですが、VBA以外にpythonなどのライブラリでは一般公開ライブラリが充実しているのに対して、VBAはそのようなライブラリはあまり充実していない、共有されていないイメージです。


 


 「ライブラリ」の種類

 VBAで扱うライブラリの種類としては「汎用プロシージャ(汎用関数)」「ユーザーフォーム」「クラスモジュール」の3種類とします。

 ちなみにこの時点で混乱を与えないように言葉をしっかりチェックしておくと、

  • 「汎用プロシージャ」など1つ1つを「部品」と呼ぶ

  • 「部品」が集まったものを「ライブラリ」と呼ぶ



 「ライブラリ」の目的

  「ライブラリ」はどのような目的で構築する、利用するかを3つの柱でまとめておきます。

  • コーディングの効率化

    汎用プロシージャなどの部品を使いまわすことで、VBAコードを1から構築せずに実質のコーディング数を減らすことができる


  • 可読性の向上

  部品として流用したコードは何度も流用すると、それらは見慣れたコードとなるのでその分、可読性の高いコードになる


  • 複雑、規模の大きい処理を実現

    部品を組み合わせることでより大きい処理、複雑な処理を実現できるようになります

 




 「ライブラリ」を使いこなすには?

 上記で説明したようなライブラリを使いこなせるようになるには3つの柱があります。


  • 便利な部品を増やす

    汎用プロシージャなどで「よく使うもの」「毎回記述しようとすると思い出すのが大変な処理」などをためておくことで、後々のコーディングがさらに効率化できます。

    さらに、以降のコーディングを行う際にすでにある汎用プロシージャなどの部品を変更、修正したりしてそれ以降のコーディングのためにさらに洗練させることも大事です。


  • 部品を管理する

    部品が増えれば増えるほど、「探し出す」「思い出す」のが大変になります。そうならないように「どういう場所に保存するか」「探索しやすい、思い出しやすい名前にしておくか」なども重要になります。


  • すぐに流用できる

  流用する際に汎用プロシージャなどのコードをコピーしてくる必要がありますが、このコピー作業(流用作業)を効率的に行うために「階層化フォーム」というツールが存在します。


 今回の登壇では「すぐに流用できる」についてのノウハウをメインに話すために、まずはサンプルマクロを紹介して、そのサンプルマクロで使用している汎用プロシージャを「階層化フォーム」を利用してどのように流用できるかを説明します。


階層化フォーム詳細 ⇒ https://www.softex-celware.com/post/ikikaiso2


 紹介する部品

 今回の登壇では次のような部品を紹介しています。

  • CopySheets

     特定のシートを指定個数分複製する


  • GetSheets_ExceptOriginSheet

     原本シート基準に原本から複製した全シートを取得


  • ConvOneDrivePath_LocalPath

     OneDriveの影響でURLになったファイルパスをローカルパスへ変換


  • OutputPDFs

     複数シートをまとめてPDFとして出力




 サンプルの仕組み(1ヶ月分日報作成)

 上記の汎用プロシージャを使用しているサンプルマクロの機能の1つ目「1ヶ月分の日報作成」についてです。

①:「設定」シートにて「年」「月」を◀▶ボタンで設定します。

②:「原本」シートに1日分の日報入力のテンプレートが作成されています。

③:「1ヶ月分日報作成」ボタンを押すと、設定した「年」「月」に基づいてその月の日数分のシートを「原本」シートを複製して自動作成されます。


 これで1ヶ月分の日報の入力シートが自動作成されます。



 「1ヶ月分日報作成」ボタンに登録しているマクロのVBAコードは次のように構築されています。

 使用している汎用プロシージャは可読性を高めるために「:=」を利用した名前付き引数として記述されています。

 ここでは「CopySheets」と「GetSheets_ExceptOriginSheet」を使用しています。


 サンプルの仕組み(日報PDF出力)

 入力された日報をPDFとしてまとめて出力します。

①:「日報PDF出力」ボタンを押すと、1ヶ月分のシートが1つのPDFファイルとしてまとめて出力されます。

②:出力されるPDFはブックと同じフォルダ上に「年」「月」をもとに「日報(YYYYMM).pdf」として自動的に名前を設定されて出力されます。 


「日報PDF出力」ボタンに登録しているマクロのVBAコードは次のように構築されています。

使用している汎用プロシージャは可読性を高めるために「:=」を利用した名前付き引数として記述されています。

 ここでは「ConvOneDrivePath_LocalPath」と「OutputPDFs」を使用しています。

 

部品(汎用プロシージャ)はアドインから参照している

 上記のサンプルマクロ「日報自動作成.xlsm」の2つのマクロ「S_1ヶ月分日報作成」「S_日報PDF出力」では紹介したように4つの部品(汎用プロシージャ)を利用しています。

 この汎用プロシージャは自ブック「」内には一切記述していないプロシージャになります。

 では「どこに記述して、流用しているのか?」という疑問が出てきますが、このカラクリとして、下記図のようにマクロ付ブック「日報自動作成.xlsm」はアドインファイル「IkiKaiso.xlam」を参照しており、4つの汎用プロシージャは「IkiKaiso.xlam」内に記述してあるものを利用しています。

 このようにアドイン「xlam」に部品を記述しておけば、アドインを参照するだけで、その部品をすぐ利用できるようになります。


 ただアドインを参照して、汎用プロシージャを流用すると一つ問題が発生します。それは開発したマクロ付ブックはアドインを参照していないと動かないということです。この状態だと開発したマクロ付ブックが自分だけの環境化で使う場合は問題ありませんが、もし依頼者など他人に渡すときは、参照しているアドインも一緒に渡さないといけなくなります。

 そうした場合はその依頼者に「このアドインファイルを指定の場所に保存して、参照設定も確認しておいてください」と説明する必要があります。さらにこのアドインファイルには今回の4つの汎用プロシージャ以外に多くの部品を保管しているので、これらの部品を盗まれるなどの危険性もあります。


 これを解決するためには、開発したマクロ付ブック内にアドインで参照している汎用プロシージャのコードをすべてコピーしてアドインの参照を解除し、マクロ付ブックを独立して動作するようにしなければなりません。

 この作業を一瞬で行えるのが階層化フォームの強みになります。 




流用の手順(階層化フォームの使い方)

 上記で構築したマクロ付ブックを「日報自動作成.xlsm」というブック名とします。このブックはアドインファイル「IkiKaiso2.xlam」を参照して構築されたとします。

 ここから「階層化フォーム」を利用して、「日報自動作成.xlsm」が「IkiKaiso2.xlam」から参照している上記4つの汎用プロシージャをコピーしてきて、「日報自動作成.xlsm」が「IkiKaiso2.xlam」に頼らずに独立して動くようにします。


アドインの参照状態確認



階層化フォームの起動



コピーした汎用プロシージャを貼り付け




アドイン(IkiKaiso2.xlam)の参照解除



参考資料

 


Excel VBAによる業務自動化・ツール開発をご検討の方へ

​"脱Excel"の前に、現状のExcelの潜在能力を120%発揮してみませんか?

Softex-Celware

​インボイス登録番号:T5810983887134

  • Facebook
  • Twitter
  • YouTube

©2023 softex-celware。Wix.com で作成されました。

bottom of page