【问题标题】:Using Registry to install Excel AddIn使用注册表安装 Excel 插件
【发布时间】:2024-01-21 04:12:01
【问题描述】:

我创建了一个名为

的excel插件

Project Count_Per Person.xlam

当我打开 excel 并转到 Development>AddIns 并选择要安装的 AddIn 时,如果我在保存后关闭 excel,它不会保持安装状态。我制作的插件,在“插件”选项卡下创建了一个新的 MenuBarButton

所以我创建了一个新的注册表项来在启动时安装插件

HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\Addins\ProjectCount_PerPerson

钥匙是这样的

(Default)     REG_SZ        (value not set)
Description   REG_SZ        Project Count_Per Person
FriendlyName  REG_SZ        Project Count_Per Person
LoadBehavior  DWORD         0x00000003 (3)
Manifest      REG_SZ        C:\Users\b012918\AppData\Roaming\Microsoft\AddIns\Project Count_Per Person.xlam

当我启动 Excel 时,它显示它正在安装插件,但随后我得到一个

异常读取清单来自

file:///C:/Users/b012918/AppData/Roaming/Microsoft/AddIns/Project%Count_Per%Person.xlam:

清单可能无效或文件无法打开。

http://pastebin.com/bN1datV5

对我搞砸的任何见解都会有所帮助。

其他信息:

如果在我启动 excel 时卸载了插件,则会出现清单错误。如果在我启动 excel 时插件被“选中”,它会在下面的评论中给出下载错误。即使先前安装了插件,CommandBarButton 也不会保留在原位。此外,在 options--> addins 下,插件被声明为“Active”。

【问题讨论】:

  • 在仍然安装插件的初始错误之后,每次我再试一次,它都会给我“下载文件不成功”,因为文件正在被另一个系统进程使用。 CommandBarButton 仍然不可见。

标签: excel load registry add-in


【解决方案1】:

澄清一下,Excel(和其他 Office 应用程序)有两种类型的插件,VBA 插件和 COM 插件。 COM 插件是通过 Visual Studio 和 Visual Studio Tools for Office 开发的。这就是 brett s 所指的内容。

但更可能的类型是普通 VBA Excel 插件,通常通过 .xlam 文件分发。 为了自动为用户加载这样的插件,您需要机器上某个本地目录中的插件文件并通过注册表引用它。 对于 Excel 2010,用于加载相应注册表项的 REG 文件是:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Excel\Options]
"OPEN"="C:\\Path\\To\Addin\\Addin.xlam"

这样每次启动 Excel 时都会加载插件。

【讨论】:

    【解决方案2】:

    我使用 Visual Studio 构建了一个名为 'FirstExcelAddIn' 的加载项,并检查了它在构建注册表项时做了什么。我的注册表从问题中显示的键中正确,我只是没有它在 COM 插件中寻找的所有文件。

    这是我的功能插件在注册表中的样子

    (Default)     REG_SZ        (value not set)
    Description   REG_SZ        FirstExcelAddIn
    FriendlyName  REG_SZ        FirstExcelAddIn
    LoadBehavior  DWORD         0x00000003 (3)
    Manifest      REG_SZ        C:\Users\b012918\AppData\Roaming\Microsoft\AddIns\FirstExcelAddIn.vsto|vstolocal
    

    这是插件正常工作所需的文件夹中的文件

    1. FirstExcelAddIn.dll
    2. FirstExcelAddIn.dll.manifest
    3. FirstExcelAddIn.vsto
    4. Microsoft.Office.Tools.Common.v4.0.Utilities.dll

    我怀疑如果您在没有工具的情况下从头开始编写插件,您只需要 '.dll''.dll.manifest' 让您的插件正常工作。

    【讨论】: