我一直在尝试从封闭的 Excel 文件中获取数据,到目前为止,还没有发布的解决方案可以在不打开源工作簿的情况下实现此目的。我尝试过使用 ExecuteExcel4Macro 命令,但无法使用该命令,因为我需要 VLOOKUP 的搜索功能。然而,使用 VLOOKUP 有其自身的问题。我不能简单地做这样的事情:
cell.Value = "=VLOOKUP(<search item>, '<filepath>[<sourcename.xlsx>]<worksheet>'!<range>, <col>, FALSE)"
因为我需要在将源数据输入单元格之前对其进行一些处理。
我已经成功获得了一个 MWE,它可以打开源工作簿并运行
Application.VLookup(<search item>, <source range object>, <col>, FALSE)
它成功获取数据,但我无法在后台安静地打开工作簿。其中一本工作簿包含链接,并且会出现一个弹出对话框,询问我是否要更新链接。我试图用以下命令抑制对话框
Application.ScreenUpdate = FALSE
Application.EnableEvents = FALSE
Application.DisplayAlerts = FALSE
Workbooks.Open <source>
Set sourceRange = Workbooks(<sourcename>).Worksheets(<sheetname>).Range(<range>)
但我没有成功地抑制对话。
VLOOKUP 需要一个范围作为第二个参数,该参数必须是一个范围。我一直在打开源文件来获取这些范围,但我正在寻找一种无需打开文件即可获取这些范围对象的方法,因为我似乎无法安静地打开它们。