VBA Excel查询封闭的工作簿而不打开它

我无法search另一个CLOSED excel工作簿的列中的string。

下面的代码给出了MsgBox上的types不匹配错误

但是,如果我用ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("C3015").Address(True, True, -4150) ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("C3015").Address(True, True, -4150)然后macros工作,除了它只给了我一个硬编码值(在这种情况下,在单元格C3015)。

如何在封闭工作簿的列中search其他值而不打开它们?

  Dim wbName As String, wbPath As String, wsName As String wbPath = "Path\To\Workbook\" wbName = "NameOfWorkbook.xlsb" wsName = "NameOfWorkSheet" Dim ret As String ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("D:D").Find(What:="SearchColumnDForThisString") MsgBox ExecuteExcel4Macro(ret) // <--------- TYPE MISMATCH ERROR 

如果您在多个macros中使用本书,则可能需要打开工作簿,可以执行下列操作来打开和隐藏它。 您也可以将工作簿设置为公共variables,以便在完成时closures它。

 Dim Wn as Window Dim Wb as Workbook Application.ScreenUpdating = False Set Wb = Application.Workbooks.Open("your book") For Each Wn in Wb Wn.Visible = False Next Wn Application.ScreenUpdating = True