Application.ExecuteExcel4Macro搜索已关闭的工作簿,返回行号

时间:2017-08-08 14:23:26

标签: vba excel-vba excel

问题:我需要在已关闭的工作簿中搜索特定值,并返回匹配字符串的行号,或者更优选地返回带有匹配字符串的行号的值。

我正在尝试使用ExecuteExcel4Macro函数,我的代码可以在下面找到。

Private Function GetInfoFromClosedFile2(ByVal wbPath As String, ByVal wbName As String, ByVal wsName As String, ByVal colNum As Integer, ByVal searchString As String) As Variant
Dim arg As String
    GetInfoFromClosedFile2 = vbNullString
    If Right(wbPath, 1) <> "\" Then wbPath = wbPath & "\"
    If Dir(wbPath & wbName) = vbNullString Then Exit Function
    arg = "'" & wbPath & "[" & wbName & "]" & wsName & "'!" & Worksheets(wsName).Columns(colNum).Find(What:=searchString).Address(True, True, xlR1C1)
    'On Error Resume Next
    GetInfoFromClosedFile2 = ExecuteExcel4Macro(arg)
End Function

我在arg =

上收到运行时错误“9”

1 个答案:

答案 0 :(得分:0)

我相信你所要求的实际上可以在没有VBA的情况下完成。您可以在公式栏中编写索引(匹配)函数,只要正确引用工作簿,就可以搜索已关闭的工作簿。

您可以通过在编写公式时同时打开两个工作簿,然后关闭要引用的工作簿来实现此目的。 Excel应保留公式中的文件位置,此时它将成为数据连接。