gpt4 book ai didi

vba - 是否有一种战术(读取 'hack' )解决方案可以避免将 VBA 代码和 Excel 工作表作为一个二进制文件?

转载 作者:行者123 更新时间:2023-12-02 03:13:32 29 4
gpt4 key购买 nike

据我了解,当我使用 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 文件,该文件输出结果表。您可能必须更改一些内容才能使其在文件系统中可移动。希望这有帮助!

关于vba - 是否有一种战术(读取 'hack' )解决方案可以避免将 VBA 代码和 Excel 工作表作为一个二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540658/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com