VBA-Code exportiert aus mehreren Dokumenten Excel in der Versionskontrolle setzen [geschlossen]
-
03-07-2019 - |
Frage
Kennt jemand eine Möglichkeit, den VBA-Code aus einer Reihe von Excel-Dokumenten zu exportieren, so dass der Code in eine Subversion-Repository hinzugefügt werden? Ohne manuell jedes Dokument öffnen und den Code exportieren.
Lösung
Sie werden ein Werkzeug hierfür finden Sie hier:
http://www.pretentiousname.com/excel_extractvba/index.html
Es ist ein VBS-Skript, das Excel automatisiert. Sie können es ändern, um Ihre Bedürfnisse nach - beachten Sie, dass es nicht perfekt ist (die Webseite für Einsprüche lesen)
.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
-Adam
Andere Tipps
Ich habe dies erfolgreich in den letzten paar Jahren meinen Code zu exportieren und speichern. Ich kann bestätigen, es in Office 2003 arbeitet, 2007. Ich nehme an, es im Jahr 2000 arbeitet auch.
Als ich eine Menge von Excel-VBA-Entwicklung zu tun bekam ich in die Gewohnheit, für jede Datei in das Textformat exportieren (Modul, usw.) jedes Mal, wenn ich eine Änderung vorgenommen (im Kontextmenü). Ich hielt diese Dateien in der Quellcodeverwaltung neben dem XLA binär. Dies war für mich ziemlich gut und erforderte keine externen Tools.
SourceTools ist gut, wenn Sie zum Laufen sind, aber wenn Sie aus einer großen Anzahl von Excel-Dateien zu exportieren sind, um das Öffnen jeden und exportieren es könnte ein bisschen langweilig sein.
VbaDiff (Disclaimer: mein Produkt) hat eine API, die über mehrere Excel-Dateien und extrahieren Sie die VBA-Code lesen kann. Es ist ein Beispiel für hier - es leicht angepasst werden könnte, exportieren der Code in einer Datei, bereit zu prüfen. Wenn Sie mit SharpSvn gut sind, haben Sie wahrscheinlich den Code in das Repository hinzufügen könnte, wie Sie gehen!