据我所知,当我使用VBA代码创建Excel工作表时,VBA代码将与工作表一起保存为二进制文件.因此,我不能以有用的方式将代码放入源代码控制中,让多个开发人员处理问题,难以区分,等等.
有没有办法围绕这个没有切换到VSTO,COM插件等?例如,要在运行时从Web服务,共享驱动器等加载所有VBA的工作表?任何想法都赞赏.
谢谢.
我为Excel编写了一种构建系统,它从源文件中导入VBA代码(然后可以将其导入源代码控制,差异等).它的工作原理是创建一个包含导入代码的新Excel文件,因此它可能不适用于您的情况.
构建宏看起来像这样,我将它保存在一个名为Build.xls的文件中:
Sub Build() Dim path As String path = "excelfiles" Dim vbaProject As VBIDE.VBProject Set vbaProject = ThisWorkbook.VBProject ChDir "C:\Excel" ' Below are the files that are imported vbaProject.VBComponents.Import (path & "\something.frm") vbaProject.VBComponents.Import (path & "\somethingelse.frm") Application.DisplayAlerts = False ActiveWorkbook.SaveAs "Output.xls" Application.DisplayAlerts = True Application.Quit End Sub
现在,VBIDE的东西意味着你必须导入一个名为"Microsoft Visual Basic for Applications Extensibility 5.3"的引用,我想.
当然,你仍然有必须启动Excel来构建的问题.这可以通过一个小的VB脚本修复:
currentPath = CreateObject("Scripting.FileSystemObject") _ .GetAbsolutePathName(".") filePath = currentPath & "\" & "Build.xls" Dim objXL Set objXL = CreateObject("Excel.Application") With objXL .Workbooks.Open(filePath) .Application.Run "Build.Build" End With Set objXL = Nothing
运行上面的脚本应该启动生成Excel文件,该文件输出结果表.您可能需要更改一些内容以使其在文件系统中可移动.希望这可以帮助!