以编程方式修改Xlam引用

时间:2014-09-15 15:10:13

标签: vba

我想以编程方式添加/修改xlsm / xlam文件的引用。到目前为止,我有这段代码

Dim xBook As Workbook
Dim vbProj As VBIDE.VBProject

Set xBook = Application.Workbooks.Open(Filename:="D:\Desktop\testFileForReferenceAdding.xlsm", ReadOnly:=False)
Set vbProj = xBook.VBProject

vbProj.References.AddFromFile ("D:\Desktop\libs\xlam\libError.xlam")

xBook.Close SaveChanges:=True
Set xBook = Nothing

问题在于,即使我可以在项目资源管理器中看到libError.xlam被添加到xBook,但添加的libError.xlam参考书在关闭本书时仍无法生效 - 当我重新打开相同的工作簿,引用已经消失。如何使引用持久化?

修改 但是,此代码按预期工作

Private Sub Workbook_Open()
  ThisWorkbook.VBProject.References.AddFromFile ("D:\Desktop\libs\xlam\libError.xlam")
  ThisWorkbook.Save
End Sub

不幸的是,我想更改其他xlsm文件的引用,而不仅仅是ThisWorkBook。

EDIT2 经过半天的摆弄,结论是:代码适用于添加对 xlam 文件的xlam引用,用于添加xlam引用 xlsm < / strong>文件。为什么会如此仍然是一个谜。

1 个答案:

答案 0 :(得分:1)

XLAM文件以只读格式打开。虽然您可以添加引用,但不能在该状态下“保存”文件。您可以将它保存为新文件,删除旧文件,重命名等等,但这有点麻烦....

解决方案是在之前添加参考保存为XLAM /编译格式,和/或使用后期绑定,这样您就不会首先需要引用