我正在嘗試創建一個代碼,它將從大量工作簿中獲取所有工作表並將其粘貼到預先選定的工作簿中。複製工作表時VBA錯誤「9」下標超出範圍
到目前爲止的代碼工作,但只有一些時間,其餘的時間它告訴我,workbooks("Name").Sheet(i)
下標超出範圍。似乎沒有要到錯誤
If Not UserForm1.filePath = "" Then
Dim db As DAO.Database
Set db = OpenDatabase(UserForm1.filePath)
Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("tIO")
Dim Filename As String
Dim WS As Worksheet
Dim Counter As Integer
Dim i As Integer
i = 1
While Not rst.EOF
If Not Filename = rst!Filename Then
Filename = rst!Filename
Dim wbSource As Workbook
Set wbSource = Workbooks.Open(Filename:=Filename)
Counter = Counter + 1
'Loop through all of the worksheets in the Active workbook
For Each WS In wbSource.Worksheets
WS.Activate
WS.Select
WS.Name = (WS.Name & "_" & Counter)
WS.Activate
WS.Select
WS.Copy After:=Workbooks("Appendix 3 V0_00.xls").Sheets(i)
i = i + 1
Next
wbSource.Close False
End If
rst.MoveNext
Wend
End If
我寫的Workbooks("Appendix 3 V0_00.xls")
,因爲它扔了同樣的錯誤了,甚至更多的時候,當我使用的with
所以現在它看起來像這樣的模式;
If Not UserForm1.filePath = "" Then
Dim db As DAO.Database
Set db = OpenDatabase(UserForm1.filePath)
Dim rst As DAO.Recordset
Set rst = db.OpenRecordset("tIO")
Dim Filename As String
Dim WS As Worksheet
Dim Counter As Integer
Dim j As Integer
While Not rst.EOF
If Not Filename = rst!Filename Then
Filename = rst!Filename
Dim wbSource As Workbook
If Dir(Filename) <> "" Then
Set wbSource = Workbooks.Open(Filename:=Filename)
Counter = Counter + 1
'Loop through all of the worksheets in the Active workbook
For j = 1 To wbSource.Worksheets.Count
wbSource.Sheets(j).Activate
wbSource.Sheets(j).Select
wbSource.Sheets(j).Name = (wbSource.Sheets(j).Name & "_" & Counter)
wbSource.Sheets(j).Activate
wbSource.Sheets(j).Select
wbSource.Sheets(j).Copy After:=Workbooks("Appendix 3 V0_00.xls").Sheets(Workbooks("Appendix 3 V0_00.xls").Sheets.Count)
Next
wbSource.Close False
End If
End If
rst.MoveNext
Wend
End If
wb.SaveAs (Module1.AppendicesFolder & "\" & UserForm1.TxtJobNumber & " " & UserForm1.TxtJobName & " Appendix3 V0.00.xls")
wb.Close
xlApp.Quit
End Sub
這似乎只發生在我多次使用它之後,它可能會擅長不正確關閉?
您的意思是錯誤是在這行'WS.Copy After:= Workbooks(「Appendix 3 V0_00.xls」)。表(i)'? – R3uK
是的,我的意思是 –