Excel-链接未使用VBA更新

弗雷亚

我一直在寻找有关此问题的答案,但我尝试的任何方法似乎都无效。到目前为止,这是我必须到达的地方。

我有两个Excel工作簿。第一个工作簿是人们可以编辑的工作簿。它包含诸如下拉菜单之类的内容,这些菜单仅在链接到源文件时才起作用。第二个工作簿是源文件。它包含诸如数据表之类的信息,这些信息显示在第一个工作簿的下拉菜单列表中。(例如,医疗状况清单,例如哮喘,糖尿病等,人们可以从清单中选择一种状况。)

我目前遇到的问题是这些链接不再正确更新。

为了澄清,如果我先打开源文件然后手动打开输出文件,它们将更新。在名称管理器中,引用将如下所示:

SourceFile!NameRef1

因为我不希望人们每次必须手动打开一个文件,所以我写了一些VBA,它可以在每次打开输出文件时自动打开源文件。

Dim app As New Excel.Application
Dim book As Excel.Workbook
Private Sub Workbook_Open()
app.Visible = True
Set book = app.Workbooks.Open("C:\Users\user_000\Desktop\ExampleFolder\SourceFile.xlsm")
End Sub

它可以正常工作,但是即使将链接设置为自动更新,它们也不会更新。此时,当我进入名称管理器时,链接现在已更改为整个文件路径。由于某种原因,每次执行此操作时(例如,当我将文件移到另一个位置时),它将停止更新链接。

我不明白为什么Excel不喜欢您在名称管理器中使用文件路径作为链接。仅在引用文件名时,它始终有效。我已经尝试了在VBA中可以想到的所有功能,更改了宏安全性设置以启用几乎所有功能,但这没有什么区别。

我试过了:

ThisWorkbook.UpdateLink

但是我得到的只是运行时错误1004:对象'_Workbook'的方法'UpdateLink'失败。

哈维·法国

这真的很容易解决!

您编写的代码将启动一个新的Excel实例

Dim app As New Excel.Application

在这种情况下,您正在使用数据在源工作簿中打开。除非在excel的SAME实例中打开了输出文件中的excel组合框,否则它将无法从该输出工作簿中获取数据!

因此,只需将您的代码更改为如下所示:

Private Sub Workbook_Open()
Set book =     Workbooks.Open("C:\Users\user_000\Desktop\ExampleFolder\SourceFile.xlsm")
End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章