目次
- 概要
- Ariawase
- Hidennotare
- VBA-JSON
- VBA-Web
- VBA-JSON-parser
- Desktop Liberation
- stdVBA
- vb2clr
- VBAHaskell
- SeleniumVBA/SeleniumBasic
- TinySeleniumVBA
- SeleniumWrapperVBA
- Automate Chrome
- VBAChromeDevProtocol
- xlwings (Python)
- MiniTemplator
- busybox-vba
- mecab-vba
- sklearn-vba
- Excel VBA Framework
- Excel-DNA
- 他
- TIPS
- リンク集
概要
フレームワーク・ライブラリに関する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」といったライブラリを提供している。
- GitHub - VBA-tools/VBA-JSON: JSON conversion and parsing for VBA
- VBA-tools/VBA-Dictionary: Drop-in replacement for Scripting.Dictionary on Mac
- VBA-tools/VBA-XML: XML conversion and parsing for VBA
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のほうが処理は早い。
- cJobject class for VBA - converts jSon/excel · GitHub
- GitHub - brucemcpherson/vbaJavaScript: vbaJavaScript created by VbaGit automation
- GitHub - brucemcpherson/VbaGit: VbaGit created by VbaGit automation
- GitHub - brucemcpherson/emptycDataSet: emptycDataSet created by VbaGit automation
- GitHub - brucemcpherson/effex-demo-markers-excel: effex-demo-markers-excel created by VbaGit automation
- GitHub - brucemcpherson/GoingGas: The companion resource repository for the book Going Gas - from VBA to Apps Script
- GitHub - brucemcpherson/vbaJavaScript: vbaJavaScript created by VbaGit automation
- GitHub - brucemcpherson/vanillacJobject: vanillacJobject created by VbaGit automation
- GitHub - brucemcpherson/cChromeTraceVBA: cChromeTraceVBA created by VbaGit automation
- GitHub - brucemcpherson/excelRestLibrary: excelRestLibrary created by VbaGit automation
- GitHub - cVBAProject/scripts at master · brucemcpherson/cVBAProject
- GitHub - brucemcpherson/cDataSet: cDataSet created by VbaGit automation
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の機能を利用したいときに使うのが適しているとのこと。
- jet2jet/vb2clr: The helper class for Visual Basic for Applications (VBA) 7.0, providing access to CLR (.NET Framework) assemblies and classes.
- VBからCLR(.NET)を利用する その3[発展編] - Programming Field
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より機能を充実させているよう。
- GitHub - er-ri/selenium-wrapper-vba: A Selenium-WebDriver-based browser automation framework implemented for VBA.
- VBAでブラウザーを操作するSeleniumWrapperVBAの紹介 | 初心者備忘録
Automate Chrome
Chrome Devtools Protocol (CDP) を使用してブラウザを操作するライブラリ。CPOLライセンス。
WebDriverを必要とせず、ブラウザの操作が可能。
VBAChromeDevProtocol
こちらもChrome Devtools Protocol (CDP) を使用してブラウザを操作するライブラリ。
Automate Chromeを参考にして作成されている模様。
xlwings (Python)
MiniTemplator
- MiniTemplator - A compact template engine for HTML files
- 会社でRuby使用禁止になったのなら、VBAでテンプレートエンジンを使えばいいじゃない - ランバダ
busybox-vba
日本語プログラミング言語「なでしこ」の作者で有名なクジラ飛行机氏の作成したライブラリ。VBAからbusyboxを呼び出して、LINUXのgrep, sed, awkコマンドを実行可能とする。GPL-3.0ライセンス。
詳細は氏の書籍『プログラマーの本気がExcelを覚醒させる 超絶ExcelVBA』を参照のこと。
- GitHub - kujirahand/busybox-vba: grep, sed, awk for vba
- busybox-w32
- クジラ飛行机氏の書籍『プログラマーの本気が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/フレームワーク・ライブラリ/' には、下位層のページがありません。
リンク集
重複を恐れないリンク集。
- GitHub - sancarn/awesome-vba: A curated list of awesome VBA/VB6 frameworks, libraries, software and resources
- Coding/VBA/Framework - ClockAhead 記憶の欠片
- Coding/VBA/GitHubで公開されているコード一覧 - ClockAhead 記憶の欠片
- Topic: vba · GitHub
- Topic: vba-library · GitHub
Ariawase
- GitHub - vbaidiot/ariawase: Ariawase is free library for VBA cowboys.
- いげ太の日記: Ariawase v0.6.0 解説(ライブラリ概要編)
- いげ太の日記: [VBA] 長い長い FizzBuzz
- Ariawaseライブラリ集で学ぶVBA(1) WinInet.bas - ClockAhead 開発Blog
- VBA Ariawase memo - Qiita
- VBA Exercise ( VBAでの腕試し!) - Qiita
- GitHub - callmekohei/koffeeVBA: VBA Library based on Ariawase
Hidennotare
- RelaxTools/Hidennotare: "Hidennotare" is a source that people in RelaxTools slowly simmered.
- Hidennotareの紹介 - Qiita
- Hidennotareの使い方(1) SheetCursorクラス - Qiita
- Hidennotareの使い方(2) CSVReaderクラス - Qiita
VBA-JSON
VBA-JSON-parser
Desktop Liberation
- VBA で JSON 変換する cJobject ライブラリ - Qiita
- How to use cJobject - Desktop liberation
- Desktop Liberation
- cJobject class for VBA - converts jSon/excel · GitHub
- GitHub - brucemcpherson/vbaJavaScript: vbaJavaScript created by VbaGit automation
- GitHub - brucemcpherson/VbaGit: VbaGit created by VbaGit automation
VBAHaskell
stdVBA
vb2clr
- jet2jet/vb2clr: The helper class for Visual Basic for Applications (VBA) 7.0, providing access to CLR (.NET Framework) assemblies and classes.
- VBからCLR(.NET)を利用する その3[発展編] - Programming Field
SeleniumVBA/SeleniumBasic
- SeleniumBasic
- GitHub - T800G/SeleniumBasic.NET4: A Selenium based browser automation framework for VB.Net, VBA and VBScript
- selenium-vba Google Code Archive - Long-term storage for Google Code Project Hosting.
- Coding/VBA/SelenuimVBA - ClockAhead 記憶の欠片
- Excelマクロによる、seleniumテストケースの自動生成連載一覧:CodeZine(コードジン)
- VBA Seleniumの操作 – テックメモ
- SeleniumBasic備忘録(Excel VBAでInternet Explorerなどを操作) | TeraDas
- Selenium VBAを使って自動でブラウザーを操作してスクショをExcelに張り付けてみた (1/4):テストエビデンス取得自動化の秘技(前編) - @IT
- SeleniumでChrome version must be betweenエラーが出た時の対処方法
- 【SeleniumBasic】キャプチャした画像をエクセルファイルに貼りつける - Qiita
- Selenium Basicを使って、Excel VBAからEdgeを操作する - Qiita
TinySeleniumVBA
SeleniumWrapperVBA
- GitHub - er-ri/selenium-wrapper-vba: A Selenium-WebDriver-based browser automation framework implemented for VBA.
- VBAでブラウザーを操作するSeleniumWrapperVBAの紹介 | 初心者備忘録
Automate Chrome
VBAChromeDevProtocol
xlwings (Python)
- ExcelにPythonが搭載?その後 - xlwings を使おう - Qiita
- xlwingsを使うぜ - Qiita
- xlwingsでExcel VBAからPythonを実行&チュートリアルの補足 - Qiita
MiniTemplator
- MiniTemplator - A compact template engine for HTML files
- 会社でRuby使用禁止になったのなら、VBAでテンプレートエンジンを使えばいいじゃない - ランバダ
VBA-Web
busybox-vba
mecab-vba
sklearn-vba
Excel VBA Framework
Excel-DNA
他
- VBA-tools/VBA-XML: XML conversion and parsing for VBA
- VBA-tools/VBA-Dictionary: Drop-in replacement for Scripting.Dictionary on Mac
- VBAの2次元配列にLINQっぽい機能を追加 - Qiita
- imihito/VBALinq
- My Personal.xls
- VBA便利かもしれない関数群 - Qiita
- TinySegmenter for VBA クラス版 - Qiita
- victorze-vba/Scraping: Library to extract data from websites
- yosgspec/nodefunc_VBA: ExcelVBAからNode.jsの関数を呼び出すためモジュール
- VBAフレームワークの選び方。メリット・デメリットの比較をふまえて解説! |【案件ナビNEWS】
- Google Code Archive - Long-term storage for Google Code Project Hosting.
- AutoIt Scripting Language - AutoIt
- rowlistlib/MMemory.bas at master · francescofoti/rowlistlib
- Google Code Archive - Long-term storage for Google Code Project Hosting.
- GitHub - abarabone/vbaEnumeration: VBAでLINQ的なことを
- [VB6] IEnumVARIANT / For Each support without a typelib-VBForums
- GitHub - EagleAglow/vba-websocket-class: VBA websocket class
- Microsoft Edgeのバージョンに合わせてWebDriverをダウンロードするVBAマクロ | 初心者備忘録
- sakai-memoru/YamlReaderApp
- cJObject.clsを使用してVBAでYAML形式を操作する-酒井メモ-中
- GitHub - vbacrazy/VBAFramework: VBAFramework is a bunch of the .NET Framework Clone Classes and more
- oharab/log4vba: Logging framework for vba (similar to log4net and log4j)
- nanbu/XArray: Array class for VBA
- Noppy/LibVBA: Library for Excel VBA
- gleemars/vbatelnet: a tiny telnet library for vba.
- shapiromatron/funcVBA: Useful functions so have to deal with pesky VBA code. Many libraries are drop-in ready; see files starting with "z_" in the VBA folder.
- Wesco/HelperFunctions: VBA Function Library
- IainNZ/MacroStats: A library of statistics-related functions for the Excel version of VBA
- kellyethridge/VBCorLib: The VBCorLib framework brings many of the powerful .NET classes to VB6.
- [VB6/VBA] JSON parsing to built-in VBA.Collections with JSON Path support-VBForums
- VB6 - JsonBag, Another JSON Parser/Generator-VBForums
- ws-garcia/VBA-CSV-interface: The power you need to cleanse, filter, sort, reshape, manage and analyze data from CSV files.
- PGS62/VBA-CSV: Fast and convenient CSV reading and writing for VBA and Excel spreadsheets.
- Senipah/VBA-Better-Array: An array class for VBA providing features found in more modern languages
- SSlinky/VBA-ExtendedDictionary: Dictionary object that extends the Scripting.Dictionary
- Simple and fast, lightweight HashList-Class (no APIs)-VBForums
- Wrapper for VB6 Collections-VBForums
- [VB6] - Hash-table-VBForums
- Beakerboy/VBA-Math-Objects: Object-Based mathematical operations in VBA
- Beakerboy/VBA-SQL-Library: Object-based Database Interaction for VBA. Create SQL Statements with VBA objects instead of string concatination.
- [VB6] TaskDialogIndirect - Complete class implementation of Vista+ Task Dialogs-VBForums
- AccessUI - VBA TaskDialog
- todar/VBA-Material-Design: Two Class modules that are used to format a VBA Userform using the material design
- todar/VBA-Userform-EventListener: 🎉 A very easy way to add event listeners to a userform.
- AddinBox( Breakthrough in the Pseudo Control Array )
- krishKM/Modern-UI-Components-for-VBA: A helper dll for VBA users to design modern UI components. No install required!
- rubberduck-vba/MVVM: Model-View-ViewModel Infrastructure for VBA/VB6
- todar/VBA-Userform-Animations: Tools to have transitions and animations with Userforms and Userform controls
- thetrik/VbTrickTimer: CTrickTimer - the timer class for VB6/VBA compatible with 64 bit office.
- VBA Drag & Drop filepath | Page 6 | MrExcel Message Board
- VB6 elevated IE-Control-usage with HTML5-elements and COM-Event-connectors-VBForums
- Kubiszyn.co.uk - Home
- cristianbuse/VBA-UserForm-MouseScroll: Use the Mouse Scroll Wheel to scroll VBA UserForms and Controls
- Using WinAPI to change the color on the title bar of a UserForm | Page 2 | MrExcel Message Board
- MultiColor + Drag N Drop ListBox Class (Win32) | MrExcel Message Board
- Apprenez à programmer avec le module graphique clGdiplus
- VBAからGDI+を使う資料集 - GDIplusCODE
- Découvrez la 3D OpenGL 1.1 en VB6/VBA
- Visual Basic 6.0 - Superior Source Code: VB6 graph control
- cristianbuse/VBA-MemoryTools: Native memory manipulation in VBA
- Intercepting resetting of vba editor as well as unhandled errors for safe subclassing | MrExcel Message Board
- pointers - Low Level VBA Hacking - making Private functions Public - Code Review Stack Exchange
- [VB6] Call Functions By Pointer (Universall DLL Calls)-VBForums
- Math Expressions Parser
- ws-garcia/VBA-Expressions: A powerful string expression evaluator for VBA, which puts more than 60 mathematical, financial, date-time, logic and text manipulation functions at the user's fingertips.
- wqweto/VbAsyncSocket: Sockets with TLS 1.3 security for VB6