外部引用具有可变图纸名称的数据

时间:2016-01-14 14:58:48

标签: excel vba

我正在尝试从已关闭的工作簿中导入一系列单元格。

我使用Excel内置的外部参考链接:

='F:\UGR\JOB DATA SHEET\[JOB SHEETS 1-500.xlsx]JobNumber'!B4
='F:\UGR\JOB DATA SHEET\[JOB SHEETS 1-500.xlsx]JobNumber'!B5

... 从B4:B23向下走,然后复制B-Z列。

如果工作表名称未更改,则此方法有效。但是该文件包含作业1 - 500的工作表,每个工作表都在自己的工作表上。我试图将任何JobNumber输入的数据列拉入单元格“B7”。理想情况下,它看起来像这样:

='F:\UGR\JOB DATA SHEET\[JOB SHEETS 1-500.xlsx]&B7&'!B4
='F:\UGR\JOB DATA SHEET\[JOB SHEETS 1-500.xlsx]&B7&'!B5

... 等

我知道如果没有间接功能,这将无效,但我需要打开其他文件才能正常工作。考虑到使用此文件进行参考的用户数量,这是不切实际的。

我在VBA中发现了一个应该做我需要的宏,但我无法让它工作。在我开始搞乱它之前,这是基本宏。

Function GetValue(Path, File, Sheet, Ref)
     'Retrieves a value from a closed workbook
    Dim Arg As String
     'Make sure the file exists
    If Right(Path, 1) <> "\" Then Path = Path & "\"
    If Dir(Path & File) = "" Then
        GetValue = "File not  Found"
        Exit Function
    End If
     'Create the argument
    Arg = "'" & Path & "[" & File & "]" & Sheet & "'!" & Range(Ref.Range("A1").Address(, , xlR1C1))
     'Execute XLM macro
    GetValue = ExecuteExcel4Macro(Arg)
End Function

有关如何使其发挥作用的任何想法,或替代解决方案?我还可以暂时将工作表导入我的其他文件并在输入新值时覆盖它,从而从另一个工作簿导入另一个工作表,但这看起来要复杂得多。

我正在使用Excel 2013。

更新:我更接近于搞清楚但我不能让它显示除#Value错误之外的任何内容。我的公式在excel中看起来像这样:

=GetValue(H11,H12,B7,B4)

Cell H11 = F:\UGR\JOB DATA SHEET\
Cell H12 = JOB SHEETS 1-500.xlsx
Cell B7 = The input cell where the user enters a JobNumber (aka sheet name).
Cell B4 = B4 (The cell I want to search on the external workbook)

Cell B4是我认为错误所在。这个宏能否告诉它需要在单元格B4搜索外部文件?

1 个答案:

答案 0 :(得分:0)

我明白了。无法从工作簿本身启动宏,必须从VBA完成。