1

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

我知道您可以以编程方式修改 XLA 文件(例如这个问题),因此编写一个创建空 XLA 的脚本应该不会太难,然后遍历文件夹中的所有文件以将它们添加到其中...?

谢谢,

缺口

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

4

1 回答 1

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 中使用它们。

于 2010-10-19T17:49:35.250 回答