【问题标题】:Programatically Install Microsoft Access Add-In Using VBA使用 VBA 以编程方式安装 Microsoft Access 加载项
【发布时间】:2015-09-01 01:53:40
【问题描述】:

查找有关 Microsoft Access 加载项开发的信息就像拔牙一样!是的,我发现写了几篇托管加载项文章......但几乎找不到非托管加载项。我确实找到了一篇很棒的文章,它在创建基本上是一个非托管的 .mda 项目方面非常古老......我已经遵循并创建了一个加载项。现在我想要一种自动化的方式来部署这个加载项。

我已经看到它通过 VBA 使用 Rick Fisher 的 Find and Replace 插件工具等工具完成...但无法在 Access 中找到以编程方式执行此操作的方法。我发现了很多关于 Excel 加载项甚至 Excel 加载项安装的文章。一种这样的方法使用 VBA,如下所示:

Sub InstallAddIn()
    Dim AI As Excel.AddIn
    Set AI = Application.AddIns.Add(Filename:="C:\MyAddIn.xla")
    AI.Installed = True 
End Sub

不幸的是,Access 没有使用相同的方法。如果有人能指出我正确的方向,我将不胜感激。如果有人知道任何更深入地开发 Microsoft Access 加载项的书籍或参考资料,将不胜感激,而且大多数选择似乎都很渺茫。

【问题讨论】:

    标签: vba ms-access add-in


    【解决方案1】:

    这只是个坏主意。老实说,我什至不确定它在当前版本的 Windows/Office 中的位置。我在注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office 中找到了 Word 和 Excel,但我安装了 Access,但在那里看不到 Access 文件夹。在某一时刻,可以通过此注册表项访问 Access 加载项:

    HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Microsoft\Office\11.0\Access\Menu 加载项

    This worked for Office 2003 on Win Vista。但每次 Microsoft 更新 Office/Windows 时,它都会发生变化,因此尝试以编程方式执行此操作将没有实际意义,因为每次更新 Office 或 Windows 时,您都必须更新并推出数据库更改。

    【讨论】:

    • 对于 Win7 64 位上的 Access 2010,它是:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access\Menu Add-Ins -- 使用 Select Case over Access 版本可能是可能的。
    • 啊!那是那个小混混藏身的地方!天哪,维护那个案例声明的头痛......我宁愿不这样做。 :o)
    【解决方案2】:

    如果您以主注册表配置单元为目标,则有逻辑会为您将密钥放置在正确的位置。例如,您永远不会硬编码Wow6432Node,因为当 32 位应用程序尝试使用注册表时,该位置由 64 位窗口自动管理。同样,在现代 C2R 版本的 office 中,注册表位置位于一个非常奇怪的位置。你不必担心它。如果您从 Access 中定位主键,则该键最终会神奇地出现在正确的位置。

    如果您想按用户安装,我建议使用以下位置。

    把文件放在这里:

    Private Function GetAddinFileName() As String
        GetAddinFileName = Environ$("AppData") & "\Microsoft\AddIns\" & CodeProject.Name
    End Function
    

    使用此注册表位置:

    Private Function GetAddinRegPath() As String    
        GetAddinRegPath = "HKCU\SOFTWARE\Microsoft\Office\" & _
            Application.Version & "\Access\Menu Add-Ins\"    
    End Function
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-15
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多