以编程方式从源构建XLA

时间:2010-10-19 16:01:18

标签: excel vba vbscript build-automation xla

我有一个(版本控制的)VBA插件导出组件的文件夹(即很多 cls frm frx bas txt 文件)。有人可以给我一个构建脚本(可以是一个VB脚本,或更复杂的东西),它取这个文件夹的名称并产生(工作)XLA?

我知道您可以以编程方式修改XLA文件(e.g. this question),因此编写一个创建空XLA的脚本并不难,然后遍历文件夹中的所有文件以将其添加到它...

谢谢,

尼克

(编辑:Excel 2003,如果它有任何区别)

1 个答案:

答案 0 :(得分:0)

我在Excel工作簿中使用一个非常简单的VBA宏来执行基本相同的操作,只是我没有任何表单,并且我在格式化的文本文件中有一些单元测试信息。由于VBA与VBScript非常相似,下面的代码使用了VBScript可用的文件系统和Excel对象模型,可能对你有用。

这是.bas模块的摘录。我将它放在一个空白工作簿中,然后将我的文本文件放在工作簿所在的任何目录中,然后运行导入。将它重新用于更正式的东西应该很容易,无论是针对不同的,新创建的工作簿的加载项,还是在Excel之外完成整个构建的脚本:

'...

Private fs_ As FileSystemObject

'...

Private Sub import_()
    On Error GoTo EH

    Set fs_ = New FileSystemObject

    Call importTests_(Application.ThisWorkbook, Application.ThisWorkbook.path)
    Call importCode_(Application.ThisWorkbook, Application.ThisWorkbook.path)

    Exit Sub

EH:
    Debug.Print "Error in import_: " & Err.Number
End Sub

'...
'stuff about importing tests ignored...
'...

Private Sub importCode_(wbk As Workbook, folderName As String)
    Dim folderObj As Folder
    Set folderObj = fs_.GetFolder(folderName)

    Dim fileExt As String

    Dim fileObj As File
    For Each fileObj In folderObj.Files
        fileExt = fs_.GetExtensionName(fileObj.name)

        If fileExt = "bas" Or fileExt = "cls" Then
            Call wbk.VBProject.VBComponents.Import(fileObj.path)
        End If
    Next fileObj
End Sub

'...

我不知道导入表单的问题是什么,因为我从未在Excel中使用它们。