.. _text-scripting-vba-quickstart: ================================================================ Quick Start: Text Scripting VBA ================================================================ - :ref:`text-scripting-vba-recommended_system_requirements` .. contents:: :local: ---------------------------------------------------------------- 1. ファイルのダウンロード ---------------------------------------------------------------- 下記ファイルをダウンロードして、同じフォルダに置く。 - `txt-scripting.xlsm `_ (マクロ本体) .. note:: もしくは、手元で空の xlsmファイルを作成して、下記のソースファイルを読み込んでもよいです。(文字コードがあってなくてもコメントが文字化けするだけです。) - :download:`source code (UTF8) <./_src/src/ThisWorkbook.cls>` (マクロソースファイル: UTF-8テキストファイル本体) - :download:`libdef.txt <./_src/libdef.txt>` (モジュールリスト) - :download:`main.bas <./_src/main.bas>` (サンプルモジュール1: テキストファイル) - :download:`modSample.bas <./_src/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.xlsm .. note:: ソースコードを全て外部のテキストファイルから読み込むので、txt-scripting.xlsm 自体はバージョン管理する必要は基本的にはありません。 シートをデザインしている場合は、その部分だけ別途管理が必要かも.. (> シートをデザイン含めてエクスポートする方法はある?) ---------------------------------------------------------------- 3. マクロの動作確認 ---------------------------------------------------------------- 3.1. txt-scripting.xlsm の起動 ******************************** txt-scripting.xlsm を起動する。 .. note:: マクロ実行に関する警告が表示された場合、「マクロを有効にする」を選択してください。 .. image:: ./images/warning-macro.png .. note:: - ファイルを開いた時点で、libdef.txt に記載された外部ライブラリ(テキストファイル)を読み込みます。 3.2. マクロの一覧確認 ******************************** - メニューバーから [開発] を選択する。 .. image:: ./images/mac-toolbar-develop.png .. note:: メニューバーに [開発] が表示されていない場合は、リボンの設定で [開発] にチェックを入れる。 :ref:`excel-menuadd-development` - メニューバーから [マクロ] を選択する。 .. note:: 実行可能なマクロの一覧が表示される。 .. image:: ./images/mac-dialog-macro.png - text-scripting 標準のマクロ - ThisWorkbook.reloadModule(): libdef.txt/モジュールのリロード (開発作業で頻繁に利用する) - ThisWorkbook.exportThisWorkbook(): text-scriptingのソースコードをテキストエクスポート - :ref:`main.bas ` に記述 - showRevision: リビジョン表示 - :ref:`modSample.bas ` に記述 - dispOS: OS表示 - dispVersion: Officeバージョン表示 3.3. dispOS の実行結果 ******************************** .. image:: ./images/result-dispOS.png 3.4. dispVersion の実行結果 ******************************** .. image:: ./images/result-dispVersion.png 3.5. showRevision の実行結果 ******************************** .. image:: ./images/result-showRevision.png ---------------------------------------------------------------- 4. ソースコード(テキストファイル)を変更してみる ---------------------------------------------------------------- dispVersion の表示が寂しいので、書き替えてみる。 .. warning:: vi でも Emacs でも、慣れているエディタを使いましょう。 4.1. modSample.bas の修正 ******************************** ./modSample.bas: .. literalinclude:: ./_src/modSample.bas :language: vbnet :linenos: 変更点 (23行目付近 diff):: - MsgBox Application.Version + MsgBox "Office version is " & Application.Version 4.2. 変更の反映 ******************************** - ツールバー > [開発] > [マクロ] - マクロの一覧から "ThisWorkbook.reloadModule" を選択し、[実行](ボタン)をクリックする。 .. note:: - ctrl + r でもリロードできます (v1.0.0 検証中) 4.3. 反映の確認 ******************************** - ツールバー > [開発] > [マクロ] - マクロの一覧から "dispVersion" を選択し、[実行](ボタン)をクリックする。 .. image:: ./images/result-dispVersion-custom.png .. note:: バージョン番号の前に "Office version is " という文字列が追加されていることを確認します。 ---------------------------------------------------------------- 5. ライブラリリスト(テキストファイル)を変更してみる ---------------------------------------------------------------- modSample の動作確認ができたので、ライブラリリストから削除する。 .. warning:: vi でも Emacs でも、慣れているエディタを使いましょう。 5.1. libdef.txt の修正 ******************************** ./libdef.txt: .. literalinclude:: ./_src/libdef.txt :linenos: 変更点 (diff):: - ./modSample.bas - './modSample.bas 5.2. 変更の反映 ******************************** - ツールバー > [開発] > [マクロ] - マクロの一覧から "ThisWorkbook.reloadModule" を選択し、[実行](ボタン)をクリックする。 .. note:: - ctrl + r でもリロードできます (v1.0.0 検証中) 5.3. 反映の確認 ******************************** - ツールバー > [開発] > [マクロ] .. image:: ./images/mac-dialog-macro-custom.png .. note:: マクロの一覧から "dispVersion" と "dispOS" が消えていることを確認します。 ---------------------------------------------------------------- 6. Let's coding VBA with your vi or Emacs ---------------------------------------------------------------- あとは、 libdef.txt に自作モジュールのパスを追記して、 - 自作モジュールを vi/Emacs で更新、 - reloadModule() (もしくは Ctrl + r) でリロード - モジュール実行(動作確認) を繰り返すだけ! ---------------------------------------------------------------- 7. VBAマクロの開発サイクル ---------------------------------------------------------------- 別途記述予定ですが、自分は vi & git/mercurial で概ね下記のようなサイクルを実施しています。 (テストはあまりできてない...) 1. 試作フェイズ - 空のモジュールファイル(.bas もしくは .cls) を作成する。 - 新モジュールに対するテストをviで書く。 2. 開発フェイズ - 新モジュールとテストをバージョン管理システムに add する。 - libdef.txt をviで更新し、バージョン管理システムに commit する。 - 以下を繰り返す - 新モジュールの中身をviで書く。 - reloadModuleを実行し、テスト/動作確認を実行する。 - 動作結果が想定通りであれば、バージョン管理システムに commit する。 3. リリースフェイズ - バージョン管理システムにコミットする。 - ThisWorkbook モジュールの中身を全削除して、ファイル名を配布(配置用)ファイル名に変更する。 - リリースする。(リリース先に配置する。) .. note:: ThisWorkbook モジュールの中身を全削除して、保存されたマクロファイルは単独でどこでも動作します。 (再読み込みをしなくなるため、最後に読み込みをした状態になる。)