我嘗試合併新工作簿中文件夾的工作簿。 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)下標越界。」 –