使用VBA以编程方式安装Microsoft Access加载项

时间:2015-09-01 01:53:41

标签: ms-access access-vba add-in

查找有关Microsoft Access的加载项开发的信息就像让您的所有牙齿都被拔掉一样!是的,我发现这对管理的附加文章已经写好......但是对于未管理的加载项,它几乎找不到任何内容。我确实发现了一篇非常古老的文章,它基本上创建了一个非托管的.mda项目......我已经遵循并创建了一个加载项。现在,我希望以自动方式部署此加载项。

我已经看到它使用Rick Fisher的Find and Replace插件工具等工具从VBA完成了......但是无法在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的插件,我们将非常感激,并且大多数选择看起来都很渺茫。

2 个答案:

答案 0 :(得分: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 Add-Ins

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

答案 1 :(得分:0)

如果您将主注册表配置单元作为目标,则可以通过逻辑将密钥放置在正确的位置。例如,您永远不会硬编码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