MS Excel (2003/2007) ではどのようなバージョン管理システムを使用しましたか? お勧めするものとその理由は何ですか? 最も評価の高いバージョン管理システムにはどのような制限がありますか?
これを理解するために、いくつかの使用例を示します。
- VBA モジュールのバージョン管理
- 複数の人がExcelスプレッドシートで作業していて、同じワークシートに変更を加え、それを結合して統合したい場合があります。このワークシートには、数式、データ、グラフなどが含まれている場合があります。
- ユーザーは技術的にあまり詳しくなく、使用するバージョン管理システムが少ないほど良い
- スペースの制約を考慮する必要があります。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 コードを共有していただきありがとうございます。