我的同事开发了一个包含在xslm文件中的应用程序,我也必须可以访问该文件。该文件连接到许多xlam库,由于速度原因,这些库本地保存在他的机器上(从共享驱动器加载30个库需要很长时间)。
为了让我访问此应用程序,在共享驱动器上创建了一个副本,其中也复制了库。当我的同事打开另一个应用程序(引用他的本地xlam库),然后在一个Excel实例中共享xlsm文件时,共享文件中的引用会从共享xlams转移到本地xlams,从而使共享应用程序无法正常运行我 - 我无法访问他当地的xlams。是否可以禁止自动更改xlam引用?有没有办法硬编码xlam引用的路径,就像在VBA中引用DLL一样?
非常感谢任何帮助, 丹尼尔
答案 0 :(得分:2)
这些 xlam 文件是addIns。
您应该能够在运行时使用路径引用它们。以下是我在MSDN Blog: Accelerating Things (Loading Excel Add-Ins at Runtime)找到的一个示例(您可以通过Google搜索找到此内容)
Private Sub Workbook_Open()
call LoadExternalAddIns
End Sub
Private sub LoadExternalAddIns(optional byval sAddinName as string="")
Dim success As Boolean
Dim myAddIn As AddIn
dim sPath2AddIn as string
'dim sAddinName as string
sPath2AddIn = "c:\myaddins\"
if sAddinName="" then sAddinName="myxlam.xlam"
' Load XLL
'success = Application.RegisterXLL(sPath2AddIn & sAddinName)
' Load and install new XLAM
Set myAddIn = Application.AddIns.Add(sPath2AddIn & sAddinName)
myAddIn.Installed = True
' Load known XLAM
For Each myAddIn In AddIns
If myAddIn.Name = "myknownaddin.xlam" Then
myAddIn.Installed = False
myAddIn.Installed = True
End If
Next
End Sub
当然,这只是一个让您入门的示例,事实上,由于您有很多AddIns,您可能希望在隐藏工作表上列出它们然后调用上面的内容procedure LoadExternalAddIns 可能会在call LoadExternalAddIns (sAddInName)
等循环中传递每个名称。
更多资源: