据我所知,当我使用VBA代码创建Excel表时,VBA代码被保存为工作表的二进制文件.因此,我无法以有用的方式将代码放入源代码控制,有多个devs处理问题,扩展很困难等.
有没有办法解决这个问题而不切换到VSTO,COM插件等?例如,对于加载所有内容的工作表,在运行时从Web服务,共享驱动器等到VBA?任何想法赞赏.
谢谢.
据我所知,当我使用VBA代码创建Excel表时,VBA代码被保存为工作表的二进制文件.因此,我无法以有用的方式将代码放入源代码控制,有多个devs处理问题,扩展很困难等.
有没有办法解决这个问题而不切换到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 Extensability 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文件.您需要更改一些东西才能在文件系统中移动.希望这有助于!