它说下标超出范围。该工作簿已经开放。我试过一个路径ex:设置wkb2 =工作簿(“d:/A.xlms”)。此外,我尝试了这个设置wkb2 = Workbooks.open(“d:/A.xlms”),工作簿未打开。这一切都返回错误,提到该文件不存在。
Sub CopySourceToTarget()
Dim wkb1 As Workbook
Dim sht1 As Worksheet
Dim wkb2 As Workbook
Dim sht2 As Worksheet
Application.ScreenUpdating = False
Workbooks("A.xlsm").Activate
Set wkb1 = ThisWorkbook
Set wkb2 = Workbooks("A.xlsm") ----THIS LINE RETURNS THE ERROR----
Set sht1 = wkb1.Sheets("Product codes")
Set sht2 = wkb2.Sheets("Product")
sht1.Range("A8:AZ65000").Copy
sht2.Range("A4").PasteSpecial xlPasteValues
Application.CutCopyMode = False
wkb2.Close True
Application.ScreenUpdating = True
End Sub
我也尝试过这段代码而且无法正常工作
Sub CopySourceToTarget()
Dim Source As Range, Target As Range
Set Source = Workbooks("Local Codes Creation1.xlsm").Worksheets("Product Codes").Range("A8:AZ6500")
Set Target = Workbooks("A.xlsm").Worksheets("Products").Range("A4:AZ7500")
Source.Copy Destination:=Target
End Sub
答案 0 :(得分:1)
Set wkb2 = Workbooks("A.xlms")
将此行替换为
Set wkb2 = Workbooks.Open("Your Path")
例如
Set wkb2 = Workbooks.Open("G:\Book1.xlsm")
答案 1 :(得分:0)
只有worbooks.open需要完整的文件名,我的意思是路径。
对于workbooks(),仅将文件名或索引用作参数。 有关详细信息,请参阅microsoft帮助。
对于工作簿尚未打开的情况,可以并且将要发生,您需要进行错误处理。
其他方式,如果没有错误处理,则在工作簿中的每个工作簿中循环,如果name与您需要退出循环的名称相同。