防止Excel绝对地在公式中链接到外部宏函数

时间:2018-01-05 13:06:44

标签: excel vba excel-vba excel-formula

有两个工作簿:视图 foo.xlsm 和控件 bar.xlsm ,它从 foo.xlsm 加载 Workbooks.Open() - 方法并包含视图所需的VBA代码。这样做是因为 bar.xlsm 有多条可能的路径,必须先检查。

Set wC = Workbooks.Open("path\bar.xlsm", ReadOnly:=True, Editable:=False, AddToMru:=False)

foo.xlsm 中,有一个公式引用了 bar.xlsm 中的宏函数:

=bar.xlsm!functionName(parameter)

问题在于,每次启动时,excel都会修改指向 bar.xlsm 成功加载的最后一个路径的链接,e.x。:

='C:/Users/X/Desktop/bar.xlsm'!functionName(parameter)

此行为是不受欢迎的,因为 bar.xlsm 的路径可以并且将会更改。如何防止excel完全建立这个链接?

1 个答案:

答案 0 :(得分:0)

与此同时,我发现了一个简单的解决方法。我使用视图工作簿中的包装函数调用所需的方法:

Public Function functionWrapper() As Integer
   functionWrapper = Application.Run("bar.xlsm!functionName(parameter)")
End Function

在所需的单元格公式内调用包装函数,如下所示:

=functionWrapper(parameter)