我正在尝试从已关闭的工作簿中导入一系列单元格。
我使用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搜索外部文件?
答案 0 :(得分:0)
我明白了。无法从工作簿本身启动宏,必须从VBA完成。