Excel VBA With语句返回types不匹配

我已经创build了一些VBA代码从电子表格中获取填充数据,名为“Horizo​​ntal 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