我有几个(如100s)电子表格使用插件(我们称之为Addin2003)。由于迁移到新版本的Excel,我需要一些电子表格来使用新的插件(我们称之为Addin2010)。
是否有一种简单的方法可以检查和更改这些电子表格使用的引用而无需打开它们。
类似于(伪代码):
For each wbk in aListOfWorkbooks
If wbk.containsReference("Addin2003") And someOtherCriteria Then
wbk.removeReference("Addin2003")
wbk.addReference("Addin2010")
End If
Next
修改
为了更清楚,Excel 2003和2010没有加载相同的插件,因此我想更改一些依赖于2003 Addin的电子表格,并让他们使用2010 Addin。换句话说,这相当于打开工作簿,打开VBA编辑器,转到Tools / References菜单并将Addin 2003(标记为MISSING)的引用更改为Addin 2010。 如果我在Excel 2010(没有2003 Addin)中打开其中一个工作簿,由于Excel无法找到2003 Addin,我会收到各种错误。 这就是为什么我认为不打开工作簿来更改其引用可能更容易。
最后的话
似乎无法做到这一点,我将不得不在物理上打开文件来更改引用。谢谢大家。
答案 0 :(得分:2)
你可能想要做类似的事情:
Sub ChangeAddins()
Dim oAddin As AddIn
Dim sFullNameOfAddin As String, sThisAddinName As String
sFullNameOfAddin = ThisWorkbook.Path & "\" & "NewAddin.xlam"
'Add in name of xla
sThisAddinName = "Add-in Name"
If Application.Version > 11 Then
Set oAddin = AddIns.Add(sFullNameOfAddin, True)
oAddin.Installed = True
For Each oAddin In Application.AddIns
If oAddin.Name = sThisAddinName Then
If oAddin.Installed Then
oAddin.Installed = False
End If
End If
Next oAddin
End If
End Sub