rod*_*lco 4 ms-access vsto ribbon visual-studio
希望您能够帮助我。我期待使用 Visual Studio 2015(作为 VSTO 的 Ribbon-Bar)对我的第一个 MS Access AddIn 进行编程,但还没有开始,我必须已经停止了。Visual Studio 为几乎所有办公产品提供模板,但 MS Access 除外。我听说可以“更改”例如 Excel VSTO 模板,以便它可以用于开发 MS Access 功能区。有谁知道如何处理这个问题的好说明?您如何为 MS Access 开发 VSTO?
谢谢你的帮助
有一个教程。我没有尝试过,不知道它是否有效,但听起来很有希望。
这是多汁的部分。
要开始构建 Access 加载项,我可以创建一个 Word(或 InfoPath、PowerPoint、Project 或 Visio)加载项(Excel 或 Outlook 也可以使用,但它们具有额外的冗余主机特定代码)。
然后,我将在 COM 选项卡上添加对 Microsoft Access 对象库的引用(这也会引入对 ADODB 和 DAO 的引用)。它还引入了 Microsoft.Office.Core.dll,它复制了默认情况下已经引用的 Office.dll - 所以我将删除这两个副本之一。
在解决方案资源管理器中,我可以选择项目并单击“显示所有文件”按钮。这使得打开 ThisAddIn.Designer.cs 文件变得更容易——在这里我可以将 Application 字段的声明和初始化从 MOIWord.Application 更改为 MOIAccess.Application。请注意,此步骤会更改自动生成的文件:该文件通常不会重新生成,但如果我损坏了项目,则可能会重新生成(重点是,如果重新生成文件,我的手动更改将丢失):
//internal Microsoft.Office.Interop.Word.Application Application;
internal Microsoft.Office.Interop.Access.Application Application;
//this.Application = this.GetHostItem<Microsoft.Office.Interop.Word.Application>(typeof(Microsoft.Office.Interop.Word.Application), "Application");
this.Application = this.GetHostItem<Microsoft.Office.Interop.Access.Application>(typeof(Microsoft.Office.Interop.Access.Application), "Application");
Run Code Online (Sandbox Code Playgroud)
这就是所有代码更改。现在进行项目变更。有两种方法可以进行这些更改——通过 IDE 以覆盖或计数器默认设置的方式;或者通过直接手动编辑 .csproj 文件来替换默认设置。让我们看看这两种方法:首先通过 IDE,然后手动。
首先,我将更改项目属性 | 调试 | 启动动作,以“启动外部程序”,并指定Access的路径,例如:
C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE
然后,我将创建一个与加载项解决方案同名的 .reg 文件,并将其放入解决方案文件夹中。此 reg 文件用于为 Access 注册加载项(并为 Word 取消注册)。下面列出的示例 reg 文件只是标准 VSTO 构建任务对每种加载项类型所做的工作的转储,并带有附加行。附加行(下面的第一个 reg 条目)只是删除了构建任务为 Word 放入的条目。Word 和 Access 的其余条目相同,唯一的变化是将“Word”替换为“Access”:
Windows Registry Editor Version 5.00
[-HKEY_CURRENT_USER\Software\Microsoft\Office\Word\Addins\MyAddIn]
[HKEY_CURRENT_USER\Software\Microsoft\Office\Access\Addins\MyAddIn]
"Description"="MyAddIn"
"FriendlyName"="MyAddIn"
"LoadBehavior"=dword:00000003
"Manifest"="C:\\Temp\\MyAddIn\\bin\\Debug\\MyAddIn.vsto|vstolocal"
Run Code Online (Sandbox Code Playgroud)
在项目属性 | 构建事件,我添加了一个构建后事件命令行来将 .reg 文件合并到注册表中:
regedit /s "$(SolutionDir)$(SolutionName).reg"
就是这样。我现在可以按 F5 来构建解决方案:这将为 Access 注册加载项,并在加载加载项的情况下运行 Access 进行调试。
请注意,不是将 Debug 属性设置为外部程序(上面的第 4 步),我可以直接修改 .csproj 文件,将 Word 设置为 Access。例如,改变这个:
<ProjectProperties HostName="Word"
HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}" OfficeVersion="12.0" VstxVersion="3.0"
ApplicationType="Word" Language="cs" TemplatesPath="" DebugInfoExeName="#Software\Microsoft\Office\12.0\Word\InstallRoot\Path#WINWORD.EXE"
AddItemTemplatesGuid="{147FB6A7-F239-4523-AE65-B6A4E49B361F}" />
Run Code Online (Sandbox Code Playgroud)
……对此:
<ProjectProperties HostName="Access"
HostPackage="{D2B20FF5-A6E5-47E1-90E8-463C6860CB05}" OfficeVersion="12.0" VstxVersion="3.0"
ApplicationType="Access" Language="cs" TemplatesPath="" DebugInfoExeName="#Software\Microsoft\Office\12.0\Access\InstallRoot\Path#MSACCESS.EXE"
AddItemTemplatesGuid="{147FB6A7-F239-4523-AE65-B6A4E49B361F}" />
Run Code Online (Sandbox Code Playgroud)
请注意,更改值(如上所示)会更改解决方案资源管理器中使用的图标。
- 我还可以更改元素的 Name 值以更改解决方案资源管理器中 ThisAddIn.cs 的父节点的名称。改变这个:
<Host Name="Word" GeneratedCodeNamespace="MyAddIn" IconIndex="0">
<HostItem Name="ThisAddIn" Code="ThisAddIn.cs" CanonicalName="AddIn" CanActivate="false" IconIndex="1" Blueprint="ThisAddIn.Designer.xml" GeneratedCode="ThisAddIn.Designer.cs" />
</Host>
Run Code Online (Sandbox Code Playgroud)
……对此:
<Host Name="Access" GeneratedCodeNamespace="MyAddIn" IconIndex="0">
<HostItem Name="ThisAddIn" Code="ThisAddIn.cs" CanonicalName="AddIn" CanActivate="false" IconIndex="1" Blueprint="ThisAddIn.Designer.xml" GeneratedCode="ThisAddIn.Designer.cs" />
</Host>
Run Code Online (Sandbox Code Playgroud)
- 此外,注册由元素值决定。因此,我可以直接编辑 .csproj 来更改此设置,而不是将 .reg 文件设置为构建后任务(上面的步骤 5-6):
<OfficeApplication>Word</OfficeApplication>
Run Code Online (Sandbox Code Playgroud)
……对此:
<OfficeApplication>Access</OfficeApplication>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |