types不匹配的工作簿声明VBA

尝试从一个工作簿到另一个工作簿的值

Sub CopyValues() 'Current Workbook 1 Dim B As Worksheet: Set bun = Sheets("Workbook1Sheet1") 'Since Workbook 2 is open 'Getting a type mismatch error on this line, please note the workbook is open Dim wkb2 As Workbook: Set wkb2 = "Workbook2.xls" Dim x As Integer x = 3 B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" End Sub 

当你使用Set x = ....你正在设置一个对象。 所以Set Wkb2 = "..."不起作用,因为你正在分配一个string。 Ambie回答了你的问题。 这是因为WorkBooks("...")为您提供了一个对象

尝试公式分配,

 B.Range("E" & x).Formula = "=vlookup(D" & x & ", [Workbook2.xls]Sheet1!$D:$F, 3, false)" 

一旦你分配第二个工作簿Set wkb2 = Workbooks("Workbook2.xls")你不能在一个引用string中使用wkb2 ,你需要一个工作表,以及单元格范围。

  B.Range("E" & x).Value = "=vlookup(D3,'wkb2'A!$D:$F,3,0)" 

随着你想要它

 B.Range("E"&x).Value = "=vlookup(D3,'" & wkb2 & "'A!$D:$F,3,0)" 

确保wkb2也声明工作簿和工作表。