複数のExcelドキュメントからVBAコードをエクスポートしてバージョン管理に入れる[終了]
-
03-07-2019 - |
質問
コードをSubversionリポジトリに追加できるように、多数のExcelドキュメントからVBAコードをエクスポートする方法を知っている人はいますか?各ドキュメントを手動で開いてコードをエクスポートする必要はありません。
解決
このためのツールはここにあります:
http://www.pretentiousname.com/excel_extractvba/index.html
Excelを自動化するVBSスクリプトです。必要に応じて変更できます-完全ではないことに注意してください(警告についてはWebページを参照してください)。
option explicit
Const vbext_ct_ClassModule = 2
Const vbext_ct_Document = 100
Const vbext_ct_MSForm = 3
Const vbext_ct_StdModule = 1
Main
Sub Main
Dim xl
Dim fs
Dim WBook
Dim VBComp
Dim Sfx
Dim ExportFolder
If Wscript.Arguments.Count <> 1 Then
MsgBox "As the only argument, give the FULL path to an XLS file to extract all the VBA from it."
Else
Set xl = CreateObject("Excel.Application")
Set fs = CreateObject("Scripting.FileSystemObject")
xl.Visible = true
Set WBook = xl.Workbooks.Open(Trim(wScript.Arguments(0)))
ExportFolder = WBook.Path & "\" & fs.GetBaseName(WBook.Name)
fs.CreateFolder(ExportFolder)
For Each VBComp In WBook.VBProject.VBComponents
Select Case VBComp.Type
Case vbext_ct_ClassModule, vbext_ct_Document
Sfx = ".cls"
Case vbext_ct_MSForm
Sfx = ".frm"
Case vbext_ct_StdModule
Sfx = ".bas"
Case Else
Sfx = ""
End Select
If Sfx <> "" Then
On Error Resume Next
Err.Clear
VBComp.Export ExportFolder & "\" & VBComp.Name & Sfx
If Err.Number <> 0 Then
MsgBox "Failed to export " & ExportFolder & "\" & VBComp.Name & Sfx
End If
On Error Goto 0
End If
Next
xl.Quit
End If
End Sub
-アダム
他のヒント
過去数年間、これを使用してコードをエクスポートし、保存しました。 Office 2003、2007で動作することを確認できます。2000年でも動作すると想定しています。
多くのExcel VBA開発を行っていたとき、変更を行うたびに(コンテキストメニューから)各ファイル(モジュールなど)のテキスト形式にエクスポートする習慣がありました。これらのファイルは、XLAバイナリとともにソース管理に保管しました。これは非常にうまく機能し、外部ツールを必要としませんでした。
SourceToolsは、一度起動すると実行できますが、多数のExcelブックからエクスポートする必要がある場合、各ブックを開いてエクスポートするのは少し面倒です。
VbaDiff(免責事項:私の製品)には、複数のExcelファイルを読み取ってVBAコードを抽出できるAPIがあります。 こちらの例があります-エクスポートに簡単に適用できますチェックインの準備ができたコードをファイルに追加します。SharpSvnが得意であれば、おそらくリポジトリにコードを追加することができます!