Excel VBA With语句返回types不匹配
我已经创build了一些VBA代码从电子表格中获取填充数据,名为“Horizontal Data”,并将其粘贴到名为“主计划数据”的工作表中,但Workbooks(wb1)正在抛出types不匹配错误,是否有任何错误我在这里做?
Dim WBA as Variant Dim WB1, WB2 As Workbook Dim L As Long Set WB2 = ThisWorkbook MsgBox "Select Master Plan File" WBA = Application.GetOpenFilename( _ FileFilter:="Excel Files (*.XLSX), *.XLSX", _ Title:="Select Master Plan File") If WBA = False Then MsgBox "You have not selected a file" Exit Sub End If Set WB1 = Workbooks.Open(WBA) WB2.Activate With Worksheets("Master Plan Data") .Rows("2:100000").Clear End With 'ERROR BEGINS HERE With Workbooks(WB1) ' <-- Getting Type Mismatch here Worksheets("HORIZONTAL_DATA").Cells.Select Selection.Copy End With
Workbooks
对象当然可以用于查找工作簿。 但是,它需要数字索引或工作簿名称本身:
Workbooks(42) Workbooks("paxsheet.xls")
你已经有了你想玩的工作簿,它在WB1
,所以你不需要去找它。
所以改变:
With Workbooks(WB1) ' <-- Getting type mismatch here '
成:
With WB1 ' <-- Should not get type mismatch here '
一切都会好的。
而且, 除了那个直接的错误之外,由于您要使用该工作簿中的工作表,因此您需要通过在其前面加上前缀来指定.
:
With WB1 .Worksheets("HORIZONTAL_DATA").Cells.Select Selection.Copy End With
此外,假设您不需要对该副本进行select以外的其他维护,则可以直接复制它, 而无需先select:
With WB1 .Worksheets("HORIZONTAL_DATA").Cells.Copy End With
但是,当然,即使使用with
也变得毫无用处,所以你可能只想把整个事情简化为:
WB1.Worksheets("HORIZONTAL_DATA").Cells.Copy