Excel – 链接不用VBA更新

我对这个问题的答案已经广泛search,但我没有尝试似乎工作。 这是我到目前为止的地方。

我有两个Excel工作簿。 第一个工作簿是一个人们可以编辑的工作簿。 它包含诸如下拉式菜单等链接到源文件时才起作用的东西。 第二个工作簿是源文件。 它包含第一个工作簿中下拉菜单列表中显示的数据表等信息。 (例如哮喘,糖尿病等医疗状况列表,人们可以从列表中select一个条件。)

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

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

的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 

它工作正常,但链接不会更新,尽pipe它们被设置为自动更新。 此时,当我进入名称pipe理器时,链接现在已经变成了整个文件path。 出于某种原因,每次它做到这一点(例如,当我已经将文件移动到另一个位置),它停止更新链接。

我不明白为什么Excel不喜欢使用文件path作为名称pipe理器中的链接。 只有在引用文件名时,它才会起作用。 我尝试了所有我能想到的在VBA中,我已经改变了macros安全设置,以启用一切,但没有任何区别。

我试过了:

 ThisWorkbook.UpdateLink 

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

这是一个很容易解决的问题!

你写的代码启动一个新的Excel实例

 Dim app As New Excel.Application 

在这种情况下,您正在使用您的数据在源工作簿中打开。 输出文件中的excelcombobox将无法从该输出工作簿中提取数据,除非它在excel的SAME实例中打开。

所以简单地把你的代码改成这样:

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