MS Excel のバージョン管理を行う最良の方法 [closed] 質問する

MS Excel のバージョン管理を行う最良の方法 [closed] 質問する

MS Excel (2003/2007) ではどのようなバージョン管理システムを使用しましたか? お勧めするものとその理由は何ですか? 最も評価の高いバージョン管理システムにはどのような制限がありますか?

これを理解するために、いくつかの使用例を示します。

  1. VBA モジュールのバージョン管理
  2. 複数の人がExcelスプレッドシートで作業していて、同じワークシートに変更を加え、それを結合して統合したい場合があります。このワークシートには、数式、データ、グラフなどが含まれている場合があります。
  3. ユーザーは技術的にあまり詳しくなく、使用するバージョン管理システムが少ないほど良い
  4. スペースの制約を考慮する必要があります。Excel スプレッドシート全体ではなく、増分変更のみが保存されるのが理想的です。

ベストアンサー1

私は、Bazaar を使用するスプレッドシートをセットアップし、TortiseBZR を介して手動でチェックイン/チェックアウトしました。トピックが保存部分に役立ったので、ここで解決策を投稿したいと思います。

私にとっての解決策は、保存時にすべてのモジュールをエクスポートし、開くときにモジュールを削除して再インポートするスプレッドシートを作成することでした。確かに、これは既存のスプレッドシートを変換する際には潜在的に危険になる可能性があります。

これにより、モジュール内のマクロを編集できるようになります。エマック(そうです、emacs) または Excel でネイティブに実行し、大きな変更があった場合は BZR リポジトリをコミットします。すべてのモジュールはテキスト ファイルなので、Excel ファイル自体を除くソースに対しては、BZR の標準の diff スタイルのコマンドが機能します。

BZR リポジトリ用のディレクトリ X:\Data\MySheet を設定しました。リポジトリには、MySheet.xls と、各モジュール (例: Module1Macros) の .vba ファイル 1 つがあります。スプレッドシートには、エクスポート/インポート サイクルから除外される "VersionControl" というモジュールを 1 つ追加しました。エクスポートおよび再インポートする各モジュールは、"Macros" で終わる必要があります。

「VersionControl」モジュールの内容:

Sub SaveCodeModules()

'This code Exports all VBA modules
Dim i%, sName$

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count
        If .VBComponents(i%).CodeModule.CountOfLines > 0 Then
            sName$ = .VBComponents(i%).CodeModule.Name
            .VBComponents(i%).Export "X:\Tools\MyExcelMacros\" & sName$ & ".vba"
        End If
    Next i
End With

End Sub

Sub ImportCodeModules()

With ThisWorkbook.VBProject
    For i% = 1 To .VBComponents.Count

        ModuleName = .VBComponents(i%).CodeModule.Name

        If ModuleName <> "VersionControl" Then
            If Right(ModuleName, 6) = "Macros" Then
                .VBComponents.Remove .VBComponents(ModuleName)
                .VBComponents.Import "X:\Data\MySheet\" & ModuleName & ".vba"
           End If
        End If
    Next i
End With

End Sub

次に、これらのマクロを実行するために、開く/保存のイベント フックを設定する必要があります。コード ビューアーで、「ThisWorkbook」を右クリックし、「コードの表示」を選択します。コード ウィンドウの上部にある選択ボックスをプルダウンして、「(一般)」ビューから「ブック」ビューに変更する必要がある場合があります。

「ワークブック」ビューの内容:

Private Sub Workbook_Open()

ImportCodeModules

End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

SaveCodeModules

End Sub

今後数週間でこのワークフローに慣れていく予定です。何か問題があれば投稿します。

VBComponent コードを共有していただきありがとうございます。

おすすめ記事