VBA无法识别我已打开的工作簿

时间:2017-07-13 13:46:30

标签: excel vba excel-vba

它说下标超出范围。该工作簿已经开放。我试过一个路径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

2 个答案:

答案 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与您需要退出循环的名称相同。