2013-08-05 52 views
3

我无法在另一个CLOSED excel工作簿的列中搜索字符串。VBA Excel查询一个封闭的工作簿,而无需打开它

下面的代码给出了MsgBox

类型不匹配错误但是,如果我更换符合ret = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Range("C3015").Address(True, True, -4150)那么宏的作品,但它只是给了我一个硬编码值(在这种情况下,值在单元C3015)。

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

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 
+0

Range.Find()返回一个范围(不是字符串),尝试Range.Find()。地址。 – NickSlash

+0

谢谢,现在我没有收到错误,但计算结果不正确。它不断发现错误的值 –

+0

Address()方法的作用是什么?我可以摆脱它吗? –

回答

0

如果您在多个宏中使用本书,您可能希望保持工作簿处于打开状态,您可以执行下列操作来打开和隐藏它。您还可以将工作簿设置为公共变量,以便在完成时关闭它。

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 
+0

这仍然打开另一个项目。有没有办法查询它关闭? –

+0

我认为工作簿将在某种程度上打开以获取您的数据,并且每次更新链接。是否有一个特定的原因,你不想打开文件? – NickSlash

相关问题