代码之家  ›  专栏  ›  技术社区  ›  Craig T

将多个Excel文档中的VBA代码导出到版本控制中[关闭]

  •  18
  • Craig T  · 技术社区  · 16 年前

    有人知道如何从许多Excel文档中导出VBA代码,以便将这些代码添加到Subversion存储库中吗?无需手动打开每个文档并导出代码。

    4 回复  |  直到 7 年前
        1
  •  13
  •   Adam Davis    16 年前

    您可以在这里找到一个工具:

    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
    

    -亚当

        2
  •  6
  •   Vijay    16 年前

    在过去的几年里,我成功地使用了它来导出和保存我的代码。我可以确认它在Office2003、2007中工作。我想它在2000年也能用。

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

        3
  •  2
  •   RedBlueThing    14 年前

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

        4
  •  0
  •   Chris Spicer    12 年前

    一旦你启动并运行了sourcetools就很好了,但是如果你需要从大量的Excel工作簿中导出,打开每个工作簿并导出它们可能会有点乏味。

    vbadiff(免责声明:我的产品)有一个API,可以读取多个Excel文件并提取vba代码。有一个例子 here -它可以很容易地被修改为将代码导出到一个文件中,以备检入。如果您擅长使用sharpsvn,那么您可以在运行时将代码添加到存储库中!

    推荐文章