IT系/VBA/フレームワーク・ライブラリ

Last-modified: 2022-12-04 (日) 01:43:31

目次


概要

フレームワーク・ライブラリに関するVBAのTIPS。になればよいけどリンク集。

Ariawase

F#関連の書籍も書かれているいげ太氏が開発したVBAライブラリ。MITライセンス。
関数オブジェクトのFuncクラスや引数を指定したコンストラクタとして使えるInitファンクションの他、配列関連のユーティリティが充実している。

Hidennotare

Excelアドイン「RelaxTools」の開発者である渡辺恭浩氏が開発したVBAライブラリ。MITライセンス。
配列の操作を楽にするArrayListや高速な文字列連結に使えるStringBuilder等、文字列操作や数値計算基本的なライブラリを幅広く取り揃えている。
インタフェースを多用しており、拡張性・再利用性に優れた作りとなっている。
JSONにも対応しているが、ChromeのBookmarkのパースに使ってみたところ読み込めない場合があり、後述のVBA-JSONを使用した方が安定して処理ができたので、JSONのパースに関してはVBA-JSONを使用したほうが良さそう。

VBA-JSON

Tim Hall氏が開発したJSONのパースに特化したVBAライブラリ。MITライセンス。
Dictionaryを参照設定するか、本ライブラリを提供するVBA-tools内の「VBA-Dictionary」を使用する必要がある。
VBA-tools内には他にも「VBA-Web」「VBA-UTC」「VBA-XML」「VBA-Log」「vba-test」といったライブラリを提供している。

VBA-Web

Tim Hall氏が開発したRestAPIへのリクエスト・レスポンスのJSON解析などのWebアクセスを行う際に必要となるVBAライブラリ。MITライセンス。
「VBA-JSON」「VBA-UTC」のライブラリを使用している(同梱)。
GET・POSTや、PUT・DELETEメソッドでのHTTP通信を楽に行える他、Cookieにも対応し、「VBA-JSON」によりJSONの解析も行える。
OAuth2認証にも対応しており、WebAPI呼び出しに必要な機能を多く備えている。

VBA-JSON-parser

上記のVBA-JSONと勘違いしていたが別のJSONパース用ライブラリ。GPLライセンス。
Yamlに変換するプロシージャがある。

Desktop Liberation

オライリー刊『Going GAS: From VBA to Google Apps Script』の著者Bruce Mcpherson氏が開発したVBAライブラリ群。「Desktop Liberation」はライブラリを提供しているサイトの名前。
「cJobject」は高機能なJSONパースオブジェクト。VBA-JSONのほうが処理は早い。

stdVBA

VBA アプリケーションの構築を支援する標準ライブラリを目指し開発されているライブラリ。MITライセンス。
Lamda式を模した処理などモダンな処理を行えるライブラリを実装している。

vb2clr

VB(VBA)から機械語を実行する記事を書かれているjet氏が作成したライブラリ。
VB(VBA)からCLR(Common Language Runtime: 共通言語ランタイム)におけるライブラリのクラスやメソッドの呼び出しを利用しやすくするためのサポートクラス「CLRHost」を提供。修正BSDライセンス。
つまり、.NET Frameworkのクラス、メソッドを利用するためのライブラリ。VBAからArrayListなど一部の.NET Framework(3)クラスを利用できることは知られているが、CLRの実行コードを動的生成しそれ以外のクラスを利用できる。
.NET Coreは利用できない。必ずしも簡単に利用できるというわけではないため、他に代替手段がなくどうしてもCLR/.NETの機能を利用したいときに使うのが適しているとのこと。

VBAHaskell

VBAでHaskellライクな関数型プログラミングを可能とするライブラリ。
C++で開発されたDLLを導入する必要がある。

SeleniumVBA/SeleniumBasic

ブラウザ操作を可能にするSelenium(セレン)のVBA版。SeleniumBasicが現在の名称(2021年時点)でSeleniumVBAは以前の名称。
他の言語のSeleniumと同様、SeleniumBasic単体ではブラウザを操作できず、各ブラウザの該当のバージョンに対応したWebDriverが必要となる。
Selenium =命令=> WebDriver(ChromeDriver等)=操作=> ブラウザ(Chrome等)の流れ。
WebDriverはサーバとして動作し、Seleniumからの命令は実際はWebAPIの呼び出しとなっている。
VBAでのブラウザ操作はCOM経由で操作できるIE11が嘗ての主流だった(と思う)が、IE11の開発終了に伴い、サポート終了となるアプリ・サイトが増えていっている状況のため、今後はSeleniumBasic一択となると思われる。
.NET Framework 3.5のランタイムが必要。

.NET Framework 4向けにコンパイルしている方がいたので、こちらを使うと.NET Framework 3.5ランタイムは必要ないかもしれない。

TinySeleniumVBA

ExcelVBAからIEを制御する本の著者うえぞう氏が作成したSeleniumBasicをインストールせずにブラウザ操作を可能にするライブラリ。MITライセンス。
SeleniumBasicのインストールは不要だが、各ブラウザの該当のバージョンに対応したWebDriverは必要。
SeleniumBasicが担っているWebDriverへの命令(WebAPI呼出し)部分を自前でVBAで実装する方法をとっている。
ライブラリとしてVBA-JSONが必要。
SeleniumBasicと比べて機能は多くないため、完全にSeleniumBasicを置き換えるものではないが、SeleniumBasicを使わなくてもVBAからWebDriver経由のブラウザ操作ができることを示した点が面白い。

SeleniumWrapperVBA

こちらもSeleniumBasicをインストールせずにブラウザ操作を可能にするライブラリ。MITライセンス。
各ブラウザの該当のバージョンに対応したWebDriverは必要。ライブラリとしてVBA-JSONを使用(同梱)。
TinySeleniumVBAより機能を充実させているよう。

Automate Chrome

Chrome Devtools Protocol (CDP) を使用してブラウザを操作するライブラリ。CPOLライセンス。
WebDriverを必要とせず、ブラウザの操作が可能。

VBAChromeDevProtocol

こちらもChrome Devtools Protocol (CDP) を使用してブラウザを操作するライブラリ。
Automate Chromeを参考にして作成されている模様。

xlwings (Python)

MiniTemplator

busybox-vba

日本語プログラミング言語「なでしこ」の作者で有名なクジラ飛行机氏の作成したライブラリ。VBAからbusyboxを呼び出して、LINUXのgrep, sed, awkコマンドを実行可能とする。GPL-3.0ライセンス。
詳細は氏の書籍『プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA』を参照のこと。

mecab-vba

クジラ飛行机氏の作成した形態素解析器MeCabをVBAから使うライブラリ。MITライセンス。
詳細は氏の書籍『プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA』を参照のこと。

sklearn-vba

クジラ飛行机氏の作成したライブラリ。Pythonの機械学習ライブラリ『scikit-learn』をPythonなしで手軽にExcel VBAから使用できる。MITライセンス。
詳細は氏の書籍『プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA』を参照のこと。

Excel VBA Framework

会議効率化ツール「minmeeting」を開発している伊勢川 暁氏が開発したExcel簡易フレームワーク。Apacheライセンス(version 2.0)。
Excelの横方向・縦方向のデータシートと、それに対するスキーマ定義シートを用意しており、行番号・列番号の定義をスキーマ定義シートに記載。
VBAでは、データシートのデータへの入出力を管理するクラス(DAクラス)を自動作成し、スキーマ定義のシートに記載された値を動的に取得する機能を用意している。

Excel-DNA

TIPS

別ページの一覧を入れる。

'IT系/VBA/フレームワーク・ライブラリ/' には、下位層のページがありません。

リンク集

重複を恐れないリンク集。

Ariawase

Hidennotare

VBA-JSON

VBA-JSON-parser

Desktop Liberation

VBAHaskell

stdVBA

vb2clr

SeleniumVBA/SeleniumBasic

TinySeleniumVBA

SeleniumWrapperVBA

Automate Chrome

VBAChromeDevProtocol

xlwings (Python)

MiniTemplator

VBA-Web

busybox-vba

mecab-vba

sklearn-vba

Excel VBA Framework

Excel-DNA