查找有关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的插件,我们将非常感激,并且大多数选择看起来都很渺茫。
答案 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