« XMLRPCでticket.aueryの応答にarrayの件数が100件に制限されている(?)ことについて調査する | トップページ | TracにXMLRPCで接続するVBAクラスモジュール »

2009年5月25日 (月)

VBAのモジュールをSVNで管理するためにマクロでエクスポートする

ExcelとProjectでVBAのクラスモジュールを簡単に共有したりとか,VBAのプロジェクトも何とかSVNで差分が見えるように,テキストファイルで管理したい.テキストにするには,エクスポートすればいいが何かと面倒なので,マクロでできないか調べてみた.まず,マクロの記録で何とか仕様としたが,VBEditorでは何も記録されない.Webで検索すると,エクスポート方法が見つかった.後は,フォルダとファイルの存在確認なので,いつもお世話になっているOffice TANAKAのFileSystemObjectの解説を参照する.できあがったソースは

Const svnCommonFolder = "C:\TracTools\TracTools\trunk\VBA\Common\"
Const moduleName = "TracXMLRPC"

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'フォルダがあるかどうか確認する
    If FSO.FolderExists(svnCommonFolder) = False Then
        MsgBox svnCommonFolder & "フォルダは存在しません.モジュールの保存は行いません."
        Exit Sub
    End If
    ActiveWorkbook.VBProject.VBComponents.Item(moduleName).Export svnCommonFolder & "TracXMLRPC.cls"
End Sub

Private Sub Workbook_Open()
    Dim FSO
    Set FSO = CreateObject("Scripting.FileSystemObject")
    'ファイルがあるかどうか確認する
    If FSO.FileExists(svnCommonFolder & moduleName) = False Then
        MsgBox svnCommonFolder & moduleName & "ファイルは存在しません.モジュールの取り込みは中止しました"
        Exit Sub
    End If
   
    'オープンの時に呼ばれれば,当然saveされているが,デバッグの時はsaveされていないこともある
    If ActiveWorkbook.VBProject.VBComponents.Item(moduleName).Saved = False Then
        MsgBox "ファイルが保存されていないので,TracXMLRPCのオープンを中止します"
        Exit Sub
    End If
    'まず削除する
    ActiveWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents.Item(moduleName)
    '読み込む
    ActiveWorkbook.VBProject.VBComponents.Import svnCommonFolder & moduleName & ".cls"
End Sub

後はフォルダをワークブックの相対にするとか,SVNコマンドを自動で発行するとかすればいいか.

|

« XMLRPCでticket.aueryの応答にarrayの件数が100件に制限されている(?)ことについて調査する | トップページ | TracにXMLRPCで接続するVBAクラスモジュール »

VBA」カテゴリの記事

Excel」カテゴリの記事

MS-Project」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: VBAのモジュールをSVNで管理するためにマクロでエクスポートする:

« XMLRPCでticket.aueryの応答にarrayの件数が100件に制限されている(?)ことについて調査する | トップページ | TracにXMLRPCで接続するVBAクラスモジュール »