VBAでTortoiseSVNを操作する

Windowsに限りませんが、各種データをバージョン管理ソフトで管理することがあります。アプリケーション開発の現場であればソースコードや設計書や設定データなどが管理対象になると思います。

ここではバージョン管理ソフトのSubversionのクライアントソフトのTortoiseSVNをVBAで利用する方法を紹介します。

具体的にはTortoiseSVNでExcelブックのコミットやログの表示などをVBAで行う方法です。


TortoiseSVNのコマンドラインの概要

TortoiseSVNはコマンドラインでSubversionの操作を行うことが出来ます。利用できるコマンドは以下のサイトに記載されています。

https://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-automation.html

なお、ここでは紹介しませんが、svn.exeのコマンドは以下のサイトに記載されています。

https://tortoisesvn.net/docs/release/TortoiseSVN_ja/tsvn-cli-main.html

TortoiseSVNのコマンドでは用意されていない場合でもSubversionでは用意されているものもありますので、一応です。詳細は上記の1つ目のURLサイトに書いてあるので、ここでは概要を説明します。

TortoiseSVNの操作はTortoiseProc.exeに引数を渡して実行することで行います。ほとんどの場合は、/commandと/pathの2つの引数を指定します。引数を含めたコマンドラインの形式は以下のようになります。

TortoiseProc.exeのパス(半角スペースがある場合)と、/pathで指定する対象ファイルはダブルクォーテーションで囲む必要があります。


Shellでexeを実行する

TortoiseProc.exeを実行するためにWScript.Shellを利用します。WScript.Shellを参照設定をする場合としない場合で書き方が2通りあります。

参照設定をする場合は、ツールメニュー→参照設定で「Windows Script Host Object Model」にチェックを付けて、WshShellクラスの変数を利用します。参照設定をしない場合は、「CreateObject(“WScript.Shell”)」でWshShellクラスのオブジェクト変数を作成して利用します。

どちらで実装しても問題ありませんが、処理速度は参照設定をした方が若干速いです。

その理由については興味があれば別ページ「VBAの高速化(クラスは参照設定+Newする)」をご参照ください。


事前準備

以下のソースコードではTortoiseSVNの各種exeファイルが環境変数PATHに登録されている前提で書いています。そのため、ソースでは「TortoiseProc.exe」という名前だけでコマンドを実行してます。

環境変数PATHに登録する場合は、「C:\Program Files\TortoiseSVN\bin;」のような感じでTortoiseProc.exeが格納されてあるフォルダを追加してください。

もし環境変数PATHに登録できない場合は、ソースの「TortoiseProc.exe」の部分をフルパスの「C:\Program Files\TortoiseSVN\bin\TortoiseProc.exe」等の実際にインストールされているパスに書き換えてください。


TortoiseSVNのログを表示する

現在表示しているブックのSubversionログを表示します。

参照設定をしない場合の書き方で、CreateObject関数を利用しています。



TortoiseSVNのコミットダイアログを表示する

現在表示しているブックのコミットダイアログを表示します。

参照設定で「Windows Script Host Object Model」を使う場合の書き方で、WshShellクラスを利用しています。



その他コマンド

その他のコマンドはTortoiseSVNのサイトで詳細を確認して実装してみてください。

/command:の後ろが変わるぐらいで、ほとんど書き方は変わらないと思います。