Quick Start: Text Scripting VBA¶
1. ファイルのダウンロード¶
下記ファイルをダウンロードして、同じフォルダに置く。
txt-scripting.xlsm (マクロ本体)
Note
もしくは、手元で空の xlsmファイルを作成して、下記のソースファイルを読み込んでもよいです。(文字コードがあってなくてもコメントが文字化けするだけです。)
- source code (UTF8) (マクロソースファイル: UTF-8テキストファイル本体)
libdef.txt (モジュールリスト)
main.bas (サンプルモジュール1: テキストファイル)
modSample.bas (サンプルモジュール2: テキストファイル)
2. バージョン管理の開始¶
2.1. 分散バージョン管理システムへの登録¶
下記のテキストファイルを 分散バージョン管理システムに追加する。
libdef.txt
main.bas
command sample (mercurial):
% hg add libdef.txt main.bas modSample.bas
2.2. ignoreファイルの作成¶
分散バージョン管理システムの ignoreファイルを作成する。
./.hgignore sample (mercurial):
.sw.$ txt-scripting.xlsmNote
ソースコードを全て外部のテキストファイルから読み込むので、txt-scripting.xlsm 自体はバージョン管理する必要は基本的にはありません。
シートをデザインしている場合は、その部分だけ別途管理が必要かも.. (> シートをデザイン含めてエクスポートする方法はある?)
3. マクロの動作確認¶
3.1. txt-scripting.xlsm の起動¶
txt-scripting.xlsm を起動する。
Note
マクロ実行に関する警告が表示された場合、「マクロを有効にする」を選択してください。
![]()
Note
- ファイルを開いた時点で、libdef.txt に記載された外部ライブラリ(テキストファイル)を読み込みます。
3.2. マクロの一覧確認¶
メニューバーから [開発] を選択する。
Note
メニューバーに [開発] が表示されていない場合は、リボンの設定で [開発] にチェックを入れる。 VBA: add development to menu
メニューバーから [マクロ] を選択する。
Note
実行可能なマクロの一覧が表示される。
- text-scripting 標準のマクロ
- ThisWorkbook.reloadModule(): libdef.txt/モジュールのリロード (開発作業で頻繁に利用する)
- ThisWorkbook.exportThisWorkbook(): text-scriptingのソースコードをテキストエクスポート
- main.bas に記述
- showRevision: リビジョン表示
- modSample.bas に記述
- dispOS: OS表示
- dispVersion: Officeバージョン表示
- text-scripting 標準のマクロ
4. ソースコード(テキストファイル)を変更してみる¶
dispVersion の表示が寂しいので、書き替えてみる。
Warning
vi でも Emacs でも、慣れているエディタを使いましょう。
4.1. modSample.bas の修正¶
./modSample.bas:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 Attribute VB_Name = "modSample" Option Explicit Sub dispOS() Dim nameOS As String nameOS = Application.OperatingSystem If nameOS Like "Windows *" Then ' Windows (32-bit) NT 6.01 MsgBox "This is Windows OS. [" & nameOS & "]" ElseIf nameOS Like "Macintosh *" Then ' Macintosh (Intel) 10.8 MsgBox "This is Mac OS X. [" & nameOS & "]" End If End Sub Sub dispVersion() MsgBox Application.Version End Sub
変更点 (23行目付近 diff):
- MsgBox Application.Version
+ MsgBox "Office version is " & Application.Version
4.2. 変更の反映¶
ツールバー > [開発] > [マクロ]
マクロの一覧から "ThisWorkbook.reloadModule" を選択し、[実行](ボタン)をクリックする。
Note
- ctrl + r でもリロードできます (v1.0.0 検証中)
4.3. 反映の確認¶
- ツールバー > [開発] > [マクロ]
- マクロの一覧から "dispVersion" を選択し、[実行](ボタン)をクリックする。

Note
バージョン番号の前に "Office version is " という文字列が追加されていることを確認します。
5. ライブラリリスト(テキストファイル)を変更してみる¶
modSample の動作確認ができたので、ライブラリリストから削除する。
Warning
vi でも Emacs でも、慣れているエディタを使いましょう。
5.1. libdef.txt の修正¶
./libdef.txt:
'main ./main.bas 'modules ./modSample.bas
変更点 (diff):
- ./modSample.bas
- './modSample.bas
5.2. 変更の反映¶
ツールバー > [開発] > [マクロ]
マクロの一覧から "ThisWorkbook.reloadModule" を選択し、[実行](ボタン)をクリックする。
Note
- ctrl + r でもリロードできます (v1.0.0 検証中)
6. Let's coding VBA with your vi or Emacs¶
あとは、 libdef.txt に自作モジュールのパスを追記して、
- 自作モジュールを vi/Emacs で更新、
- reloadModule() (もしくは Ctrl + r) でリロード
- モジュール実行(動作確認)
を繰り返すだけ!
7. VBAマクロの開発サイクル¶
別途記述予定ですが、自分は vi & git/mercurial で概ね下記のようなサイクルを実施しています。 (テストはあまりできてない...)
- 試作フェイズ
- 空のモジュールファイル(.bas もしくは .cls) を作成する。
- 新モジュールに対するテストをviで書く。
- 開発フェイズ
- 新モジュールとテストをバージョン管理システムに add する。
- libdef.txt をviで更新し、バージョン管理システムに commit する。
- 以下を繰り返す
- 新モジュールの中身をviで書く。
- reloadModuleを実行し、テスト/動作確認を実行する。
- 動作結果が想定通りであれば、バージョン管理システムに commit する。
- リリースフェイズ
- バージョン管理システムにコミットする。
- ThisWorkbook モジュールの中身を全削除して、ファイル名を配布(配置用)ファイル名に変更する。
- リリースする。(リリース先に配置する。)
Note
ThisWorkbook モジュールの中身を全削除して、保存されたマクロファイルは単独でどこでも動作します。 (再読み込みをしなくなるため、最後に読み込みをした状態になる。)