【问题标题】:Application.ExecuteExcel4Macro Searching Closed Workbook, Return Row numApplication.ExecuteExcel4Macro 搜索已关闭的工作簿,返回行号
【发布时间】:2018-01-16 04:18:44
【问题描述】:

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

我正在尝试让它与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”

【问题讨论】:

  • 如果未找到搜索字符串,Find 方法将返回 Nothing,尽管我预计这会导致 Object Required 错误。
  • 除非运行时 ActiveWOrkbook 中有工作表wsName,否则此代码将引发 9 Subscript out of Range 错误。
  • 我的活动工作簿中的工作表名称与wsName 不同。甚至可以将Find 函数与ExecuteExcel4Macro 一起使用吗?
  • 不,不可能做你想做的事,我认为这是要求 ExecuteExcel4Macro 评估关闭工作簿上的 range.Find 方法。
  • 我认为这可能是问题所在,也许我可以使用MATCH 函数而不是.Find

标签: excel vba excel-4.0


【解决方案1】:

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

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

【讨论】:

  • 我对创建公式不感兴趣,因为我需要从每月更改的文件中复制 800 多个值。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多