当前位置:  开发笔记 > 后端 > 正文

是否有一个战术(阅读"黑客")解决方案,以避免将VBA代码和Excel工作表作为一个二进制文件?

如何解决《是否有一个战术(阅读"黑客")解决方案,以避免将VBA代码和Excel工作表作为一个二进制文件?》经验,为你挑选了1个好方法。

据我所知,当我使用VBA代码创建Excel工作表时,VBA代码将与工作表一起保存为二进制文件.因此,我不能以有用的方式将代码放入源代码控制中,让多个开发人员处理问题,难以区分,等等.

有没有办法围绕这个没有切换到VSTO,COM插件等?例如,要在运行时从Web服务,共享驱动器等加载所有VBA的工作表?任何想法都赞赏.

谢谢.



1> Jonas..:

我为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文件,该文件输出结果表.您可能需要更改一些内容以使其在文件系统中可移动.希望这可以帮助!

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有