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