从多个Excel文档导出VBA代码以进入版本控制

有没有人知道从多个Excel文档中导出VBA代码的方法,以便将代码添加到Subversion存储库中? 无需手动打开每个文档并导出代码。

你会在这里find一个工具:

http://www.pretentiousname.com/excel_extractvba/index.html

这是一个自动执行excel的VBS脚本。 你可以根据你的需要修改它 – 注意它不是完美的(阅读网页的注意事项)。

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年。

http://www.codeproject.com/KB/office/SourceTools.aspx

当我做了大量的Excel VBA开发时,我习惯于每次更改(从上下文菜单中)导出为每个文件(模块等)的文本格式。 我将这些文件保存在XLA二进制文件的源代码控制中。 这对我来说很好,不需要任何外部工具。

一旦你开始运行,SourceTools是好的,但是如果你需要从大量的Excel工作簿导出,打开每个工作簿并导出它可能有点乏味。

VbaDiff(免责声明:我的产品)具有可以读取多个Excel文件并提取VBA代码的API。 这里有一个例子 – 它可以很容易地被调整来将代码导出到一个文件,准备好被检入。如果你对SharpSvn很好,你可以随时将代码添加到存储库中!