プログラムでモジュールを削除してからファイルから再インポートする際に、Excelでいくつかの変わった問題が発生しました。基本的には、ファイルをあらかじめ定義されたフォルダにエクスポートし、必要に応じて再インポートすることになっているVersionControlというモジュールがあります。一部が重複(例えばのmymoduleとmymodule1)を持っている一方で、VBAを使用してExcelでVBProject.VBComponentsに変更をフラッシュ
Dim i As Integer
Dim ModuleName As String
Application.EnableEvents = False
With ThisWorkbook.VBProject
For i = 1 To .VBComponents.Count
If .VBComponents(i).CodeModule.CountOfLines > 0 Then
ModuleName = .VBComponents(i).CodeModule.Name
If ModuleName <> "VersionControl" Then
If PathExists(VersionControlPath & "\" & ModuleName & ".bas") Then
Call .VBComponents.Remove(.VBComponents(ModuleName))
Call .VBComponents.Import(VersionControlPath & "\" & ModuleName & ".bas")
Else
MsgBox VersionControlPath & "\" & ModuleName & ".bas" & " cannot be found. No operation will be attempted for that module."
End If
End If
End If
Next i
End With
これを実行した後、私はいくつかのモジュールはもう表示されないことに気付きました:これは(それは以下の通りであるとの問題を)再インポートするためのコードで。コードを進めていくうちに、Remove
コールの後にいくつかのモジュールがまだ残っていることが明らかになり、それらはプロジェクト中に再インポートされることになります。場合によっては、これには末尾に1
という接尾辞が付いていただけですが、元のコピーとコピーの両方があることもありました。
Remove
とImport
へのコールをフラッシュする方法はありますか?私はSave
関数をそれぞれの後に呼び出すことを考えています、アプリケーションオブジェクトに1つがあれば、インポート中に何かが間違ってしまうと損失を引き起こす可能性があります。
アイデア?
編集:変更タグsynchronization
〜version-control
。
+1賢い少し方法です。私はこのような何かを自分で行うべきです。 –
これは、[この質問](http://stackoverflow.com/questions/131605/best-way-to-do-version-control-for-ms-excel)ここでStackOverflowに触発されました - 私のバージョンは控えめですリメイク。 – CamilB
私はこれのようなものを作成していませんが、私が試してみるものは次のようなものです:別のブック/アドインから呼び出します。最初にワークブックをバックアップし、一度にすべての削除を実行し、一度にすべてをインポートして保存します。また、Rob BoveyのコードクリーナーのCOMバージョンを使いこなすこともできます。参照を設定して、インポート、エクスポートなどの機能にアクセスできます。私はあなたが見つけたものを見るのに興味があるでしょう。 –