我有一个 VBA 插件的导出组件(即很多cls、frm、frx、bas和txt文件)的(版本控制)文件夹。有人可以给我一个构建脚本(可以是一个 VB 脚本,或者更复杂的),它采用这个文件夹的名称并产生一个(工作)XLA?
我知道您可以以编程方式修改 XLA 文件(例如这个问题),因此编写一个创建空 XLA 的脚本应该不会太难,然后遍历文件夹中的所有文件以将它们添加到其中...?
谢谢,
缺口
(编辑:Excel 2003,如果有任何区别)
我在 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 中使用它们。