使用VBA程序化安装微软Access插件。

问题描述 投票:4回答:2

寻找关于微软Access的插件开发信息就像让你所有的牙齿被拔掉!是的,我已经找到了一对夫妇的管理插件文章写......但可以找到几乎没有为非管理插件。是的,我已经找到了一对夫妇管理的插件文章写......但可以找到几乎没有为非管理的插件。我确实找到了一篇伟大的文章,这是非常古老的创建基本上是一个非管理的.mda项目......我已经遵循并创建一个插件。现在我希望有一种自动化的方式来部署这个插件。

我见过用VBA的工具来完成,比如Rick Fisher的 查找和替换 插件工具......但找不到在 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没有使用同样的方法。如果有人能指点我在正确的方向,我将非常感谢它。如果有人知道的任何书籍或参考资料,更深入地开发Add-In的Microsoft Access,这将是非常感激的,以及大多数的挑剔似乎渺茫。

ms-access access-vba add-in
2个回答
1
投票

这只是一个坏主意。 说实话,我不知道它在哪里,甚至位于当前版本的WindowsOffice。 我已经发现Word和Excel在注册表的键 HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Office但我安装了Access,却没有看到Access文件夹。 曾经有一次,Access插件可以通过这个注册表键访问。

HKEY_CURRENT_USER/Software/Classes/VirtualStore/MACHINE/SOFTWARE/Microsoft/Office/11.0/Access/Menu Add-Ins。

这在Win Vista上对Office 2003有效. 但每次微软更新OfficeWindows时,它都会发生变化,所以试图用编程方式来实现它是没有意义的,因为每次更新Office或Windows时,你都必须更新和推出数据库的变化。


0
投票

如果你以主注册表蜂巢为目标,就会有逻辑为你把键放在正确的位置。例如,你从不硬编码 Wow6432Node 因为当一个32位的应用程序试图使用注册表时,该位置是由64位的windows自动管理的。同样,在现代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
© www.soinside.com 2019 - 2024. All rights reserved.