我尝试合并新工作簿中文件夹的工作簿。 VBA代码从文件夹中读取excel文件,将每个文件名添加到列表框,然后在按下“开始”按钮之后,将非常文件添加到工作簿。这是主意。尝试打开文件时文件名为空
的代码是folows: 当打开用户窗体显示的文件:
Private Sub Workbook_Open()
UserForm1.Show
End Sub
当激活用户窗体,填充列表框:
Private Sub UserForm_Activate()
Const strFolder As String = "C:\Users\user\Desktop\tmp\"
Const strPattern As String = "*.xls"
Dim strFile As String
Dim collection As New collection
Dim i As Integer
Dim isMerger As Integer
Dim lngth As Integer
strFile = Dir(strFolder & strPattern, vbNormal)
If (StrComp(strFile, "FileMerger.xls") <> 0) Then
If (Len(strFile) <> 0) Then
col.Add (strFolder & strFile)
Do While Len(strFile) > 0
strFile = Dir
If (StrComp(strFile, "FileMerger.xls") <> 0) Then
If (Len(strFile) <> 0) Then
col.Add (strFolder & strFile)
End If
End If
Loop
End If
End If
Vars.xlsFiles = ColToArray(collection)
For i = 1 To UBound(Vars.xlsFiles)
lstFiles.AddItem (Vars.xlsFiles(i))
Next i
End Sub
此时列表框并且数组Vars.xlsFiles被填充;他们都还好。
点击开始按钮,在用户窗体:
Private Sub cmdStart_Click()
Dim fileName As String
Dim sheet As Worksheet
Dim i As Integer
Dim ub As Integer
ub = UBound(Vars.xlsFiles)
For i = 1 To ub
Workbooks.Open fileName:=Vars.xlsFiles(i), ReadOnly:=True
For Each sheet In ActiveWorkbook.Sheets
sheet.Copy After:=ThisWorkbook.Sheets(1)
Next sheet
Workbooks(fileName).Close
Next i
End Sub
在文件夹的3个文件。他们的名字在列表框中。但是,当第一个要关闭时,我收到一条错误消息,并在调试后显示fileName =“”(行Workbooks(fileName).Close)。 无论我尝试我得到了同样的错误,即fileName =“”。 怎么办?
我添加以下内容:错误消息说:“运行时错误(9)下标越界。” –