Excel:在不打开文件的情况下更改插件参考

时间:2012-02-07 10:28:52

标签: vba excel-vba excel

我有几个(如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,我会收到各种错误。 这就是为什么我认为不打开工作簿来更改其引用可能更容易。

最后的话

似乎无法做到这一点,我将不得不在物理上打开文件来更改引用。谢谢大家。

1 个答案:

答案 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