excel - 使用 VBScript 卸载 Excel 加载项

标签 excel vbscript add-in

我正在尝试创建一个 MSI 安装程序,将加载项 (.xla) 安装到 Microsoft Excel(我的例子是 2007)中。安装很顺利。我使用运行此 VBScript 文件的“自定义操作”:

Dim SourceDir
Dim objExcel
Dim objAddin

SourceDir = Session.Property("CustomActionData")
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
Set objAddin = objExcel.AddIns.Add(SourceDir & "addin.xla", True)
objAddin.Installed = True
objExcel.Quit
Set objExcel = Nothing

我使用 CustomActionData 属性将插件的位置传递给脚本。该加载项将被复制到“Program Files”内的文件夹中,并将一直保留在该文件夹中直至​​被卸载。这是由安装程序本身处理的。

问题是当我使用卸载脚本时:

Dim objExcel
Dim addin
On Error Resume Next

Set objExcel = CreateObject("Excel.Application")
For i = 0 To objExcel.Addins.Count
    Set objAddin= objExcel.Addins.item(i)
    If objAddin.Name = "addin.xla" Then
        objAddin.Installed = False
    End If
Next

objExcel.Quit
Set objExcel = Nothing

插件在安装的 Excel 中创建自定义工具栏。卸载时工具栏不会被删除,Excel 设置的“加载项”部分中的加载项条目也不会被删除。

谁能告诉我这两件事是否可以使用 VBScript 以编程方式完成?

提前致谢

最佳答案

VB(A) 中几乎所有集合都是从 1 开始的。您的循环从零开始,因此当它尝试访问 AddIns(0) 时会失败。这被您的On Error Resume Next这一事实所掩盖。

此外,您还需要明确删除工具栏。仅仅删除加载项并不能做到这一点。

我不能说我喜欢你这样做的方式,但它应该至少在 50% 的时间内有效:-)

关于excel - 使用 VBScript 卸载 Excel 加载项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1130301/

相关文章:

xml - 如何使用 vbscript 删除 XML 文件中的节点?

windows - 递归搜索 HKU 注册表配置单元以获取 DWORD 值

windows - 用于删除某些文件的 VB 脚本,如果找到文件,则将其他文件复制到目录

visual-studio - Visual Studio 插件 QueryStatus() 调用

Excel 崩溃问题 - 如何研究 Excel 崩溃的原因?

c# - 发布 COM 组件

vba - 使用 Excel VBA 查找工作簿中的所有匹配项

Excel查找文本,对文本旁边的单元格求和

excel - IF() 函数不适用于使用 VLOOKUP() 获取的数字

Excel:查找数组中的特定值,然后计算特定列中的项目数