在 Access 中创建自定义功能区

应用对象
Microsoft 365 专属 Access Access 2024 Access 2021 Access 2019 Access 2016

功能区(程序窗口顶部包含命令组的条带)是 Microsoft Office Fluent 用户界面的一个组件。 Office Fluent 用户界面为 Access 中的命令提供了一个单一主页。

当开始使用 Access 构建更高级的应用程序时,你可能决定要自定义 Office Fluent 功能区,以便使应用程序更易于使用。 例如,您可以隐藏部分或全部默认选项卡,以便用户无法使用某些命令,并可以创建仅包含您希望可用的命令的新自定义选项卡。

在使用 Office Fluent 用户界面的所有 Microsoft Office 程序中,均使用可扩展标记语言 (XML) 来自定义功能区。 因此,一些 XML 的基本知识会很有帮助。 本文不介绍 XML 概念,但提供了基本的功能区自定义过程和一些示例 XML,你可以修改这些过程以满足你的需求。

本文重点介绍如何使用 XML 创建自己的自定义功能区。 如果要使用内置工具修改现有功能区,请参阅 在 Office 中自定义功能区

您要做什么?

了解功能区自定义技术

在 Access 中,自定义功能区的方法如下:创建自定义 XML,然后添加代码或设置数据库属性,以指示 Access 在创建功能区时使用该 XML。 可以使用 XML 隐藏现有选项卡,并添加新选项卡、命令组和命令。 本文中的过程介绍了如何添加内置于 Access (的命令(如查找、排序和保存) “)以及如何添加运行你自己编写的 Access 宏的命令。

有多个位置可以存储 XML,但最简单的方法之一是将其存储在当前数据库的系统表中。 此过程包括创建名为 USysRibbons 的系统表,向其添加功能区 XML,然后指定自定义功能区是针对整个数据库显示,还是针对特定窗体或报表显示。 可以定义多个自定义功能区 — 一个用于整个应用程序,另一个功能区用于数据库中的单个窗体或报表。

创建并应用自定义功能区

以下部分提供了创建和应用自定义功能区的分步过程。

开始之前

在导航窗格中显示系统表 默认情况下,系统表不显示在导航窗格中,因此必须先更改“ 导航选项 ”对话框中的设置,以便在创建 USysRibbons 表后可查看该表。 使用以下过程:

  1. 在 Access 中打开数据库后,右键单击导航窗格顶部的导航栏,然后单击快捷菜单上的 “导航选项 ”。
  2. “导航选项”对话框的“显示选项”下,选中“显示系统对象”检查框,然后单击“确定”
    Access 系统表将显示在导航窗格中。

启用加载项用户界面错误消息的显示 在创建功能区自定义 XML 并对其进行故障排除时,错误消息是一个重要的信息来源,因此最好让 Access 显示它们。 使用以下过程:

  1. 单击 “文件>选项”。 
  2. 单击“ 客户端设置”。 
  3. “常规”下,选中“显示加载项用户界面错误”检查框,然后单击“确定”

创建 USysRibbons 系统表

使用此过程创建 USysRibbons 系统表。 稍后,你将使用此表存储功能区自定义 XML。

  1. 在“创建”选项卡上的“”组中,单击“表设计”。

  2. 将以下字段添加到表中。 请确保键入的字段名称与显示的完全一致。

    字段名称 Type 字段大小
    ID 自动编号 长整型
    RibbonName 文本 255
    RibbonXml 备注
  3. 如果需要,可以向此表添加更多字段,例如描述功能区 XML 功能的“注释”字段。

  4. 选择 ID 字段。 在“设计”选项卡上的“工具”组中,单击“主键”

  5. 在“快速访问工具栏”上,单击“保存”,或按 Ctrl+S。 将新表命名为 USysRibbons

将功能区自定义 XML 添加到 USysRibbons 表中

在本示例中,假设您要阻止数据库用户使用 “创建 ”选项卡上的任何工具。此外,你想要创建一个名为“ 自定义选项卡” 的新选项卡,其中只有“粘贴”命令,如下图所示。

自定义功能区选项卡

以下过程中的 XML 将创建此配置。

  1. 在导航窗格中,右键单击 USysRibbons 表,然后单击快捷菜单上的“ 数据表视图 ”。

  2. 将以下数据添加到表中。 可以复制本文中的 XML 示例并将其直接粘贴到表中。

    ID RibbonName RibbonXML
    (自动编号) 我的选项卡 <customUI xmlns=“http://schemas.microsoft.com /office/2006/01/customui”>功能区 startFromScratch=“false”<>选项卡选项卡><idMso=“TabCreate” visible=“false” /<>tab id=“dbCustomTab” label=“自定义选项卡” visible=“true”<>组 id=“dbCustomGroup” label=“自定义组”control>< idMso=“Paste” label=“内置粘贴” enabled=“true”/<>/group></tab></tabs></ribbon<>/customUI<>
  3. 此 XML 首先指示 Access 不要“从头开始”,也就是说,它指定 Access 应显示默认的功能区选项卡。 然后,它会告知 Access 只隐藏“ 创建 ”选项卡) (的一个默认选项卡。 最后,它会创建一个名为“自定义选项卡”的新功能区选项卡,向选项卡中添加名为“自定义组”的命令组,并向组中添加“粘贴”命令。 有关此示例以及如何对其进行自定义以满足你的需求的详细信息,请参阅 了解 XML 示例部分

  4. 关闭 USysRibbons 表,然后关闭并重新打开数据库。

应用自定义功能区

自定义功能区 XML 已存储到表中,请执行下列操作之一 - 取决于是要将功能区应用于整个数据库,还是应用于特定的窗体或报表。

  • 将自定义功能区应用于整个数据库 

    1. 单击 “文件>选项”。 
    2. 单击 “当前数据库”,然后在“功能 区和工具栏选项”下选择“ 功能区名称 ”列表,然后单击所需的功能区,在本例中为 “我的选项卡”。
    3. 单击“确定”。
  • 将自定义功能区应用于特定窗体或报表 

    1. 在导航窗格中,右键单击要应用自定义功能区的窗体或报表,然后单击快捷菜单上的“ 设计视图 ”。
    2. 如果尚未显示属性表,请按 F4 显示该表。
    3. 在属性表顶部的 “选择类型”下,确保在列表中选择对象类型 (窗 报表) 。
    4. 在属性表的“ 其他 ”选项卡上,单击“ 功能区名称 ”列表,然后单击在打开窗体或报表时要显示的功能区,在本例中为 “我的选项卡) ” (。
    5. 在“快速访问工具栏”上,单击“保存”,或按 Ctrl+S。
    6. 关闭窗体或报表,然后在导航窗格中双击以将其重新打开。
      将显示您选择的功能区。

在确认自定义功能区正常工作后,可以通过执行以下操作再次隐藏系统表:

  1. 右键单击导航窗格顶部的导航栏,然后单击快捷菜单上的“ 导航选项 ”。
  2. “导航选项”对话框的“显示选项”下,清除“显示系统对象”检查框,然后单击“确定”

返回页首

还原默认功能区

若要停止使用自定义功能区并还原默认功能区,请使用以下步骤之一,具体取决于自定义功能区是由整个应用程序使用还是由特定窗体或报表使用。

还原默认应用程序级别功能区

  1. 单击 “文件>选项”。 
  2. 单击 “当前数据库”,然后在“ 功能区和工具栏选项”下删除“ 功能区名称 ”框的内容。
  3. 关闭,然后重新打开数据库。

Access 将显示其默认的功能区选项卡。 功能区 XML 将保留在 USysRibbons 表中,直到将其删除,因此,如果要恢复自定义功能区,可以通过将 功能区名称 选项设置回之前包含的值来实现。

还原窗体或报表的默认功能区

  1. 在“设计”视图中打开窗体或报表。
  2. 如果尚未显示属性表,请按 F4 显示该表。
  3. 在属性表顶部的 “选择类型”下,确保在列表中选择对象类型 (窗 报表) 。
  4. 在属性表的“ 其他 ”选项卡上,删除“ 功能区名称 ”属性框的内容。
  5. 保存、关闭,然后重新打开表单或报表。

功能区 XML 将保留在 USysRibbons 表中,直到将其删除,因此如果要恢复自定义功能区,可通过将功能区 名称 属性中的值设置回以前包含的值来执行此操作。

返回页首

了解 XML 示例

下面是本文前面使用的 XML 示例及其创建的自定义功能区的图示。

<customUI xmlns=“http://schemas.microsoft.com /office/2006/01/customui”>功能区 startFromScratch=“false”<>选项卡选项卡><idMso=“TabCreate” visible=“false” /<>tab id=“dbCustomTab” label=“自定义选项卡” visible=“true”<>组 id=“dbCustomGroup” label=“自定义组”control>< idMso=“Paste” label=“内置粘贴” enabled=“true”/<>/group></tab></tabs></ribbon<>/customUI<>

自定义功能区选项卡

在此示例中,第二行 XML 将 startFromScratch 属性设置为 False。 将值设置为 False 可确保 Access 保留所有现有选项卡不变,并在现有选项卡的右侧添加任何新选项卡。 将此属性设置为 True 将删除所有现有选项卡,并仅显示在 XML 中创建的选项卡。 即使将 startFromScratch 属性设置为 False,您仍然可以隐藏各个选项卡。 XML 的第四行显示了这一点,它隐藏了内置的 “创建 ”选项卡。其余行创建一个自定义选项卡和一个自定义组,然后使用下面的 XML 行将内置的 粘贴 命令添加到组中。

<control idMso="Paste" label="Built-in Paste" enabled="true"/>

将其他组或控件添加到自定义功能区 可以通过添加相似的 XML 行并替换不同的 idMso标签 值,向功能区添加更多组和控件。 例如,要创建将当前选定对象导出到 Excel 的控件,请使用以下 XML。

<control idMso="ExportExcel" label="Export to Excel" enabled="true"/>

要将控件添加到与 粘贴 命令相同的组中,请紧接在创建 粘贴 命令的行之前或之后插入新的 XML 行。 若要创建新组,可以复制、粘贴和修改在上面创建 “自定义组 ”组的 XML。 下面的示例演示了将两个控件添加到自定义组中的 XML。

<customUI xmlns=“http://schemas.microsoft.com /office/2006/01/customui”>功能区 startFromScratch=“false”><选项卡选项卡><idMso=“TabCreate” visible=“false” /<>tab id=“dbCustomTab” label=“自定义选项卡” visible=“true”<>组 id=“dbCustomGroup” label=“自定义组”<>control idMso=“粘贴” label=“内置粘贴” enabled=“true”/<>/组><组 id=“dbCustomGroup2” label=“另一个自定义组”><<control idMso=“ImportExcel” label=“从 Excel 导入” enabled=“true”/><control idMso=“ExportExcel” label=“导出到 Excel” enabled=“true”/<>/group></tab></tabs></ribbon></customUI>

此 XML 将另一个组添加到 自定义选项卡。如下图所示,新组包含两个控件:一个用于从 Excel 启动导入操作,另一个用于启动到 Excel 的导出操作。

包含两个组的自定义功能区选项卡

注意

自定义功能区中的每个 组 ID选项卡 ID 值都必须是唯一的。

了解命令的 idMso 值 要了解内置命令的 idMso 值,请使用以下过程:

  1. 单击 “文件>选项”。 
  2. 单击“ 自定义功能区 ”或 “快速访问工具栏”。 
  3. 将指针移到要获取相关信息的项上方。 Access 会在屏幕提示中显示控件的 idMso 值(括号)。

添加命令以运行 Access 宏 你可以通过添加运行 Access 宏的命令来为自定义功能区增加更大的灵活性。 例如,假设你创建了一个名为 MyMacro 的宏。 若要向功能区添加运行该宏的命令,请向 XML 中添加以下一行。

<button id="RunMyMacro" label="Run My Macro" onAction="MyMacro"/>

要将控件添加到与前面示例中的 粘贴 命令相同的组中,请紧接在创建 粘贴 命令的行之前或后面插入新的 XML 行。 下面的示例演示了添加命令的 XML。

<customUI xmlns=“http://schemas.microsoft.com /office/2006/01/customui”>功能区 startFromScratch=“false”><选项卡选项卡<>idMso=“TabCreate” visible=“false” /<>tab id=“dbCustomTab” label=“自定义选项卡” visible=“true”<>组 id=“dbCustomGroup” label=“自定义组”<>control idMso=“Paste” label=“内置粘贴” enabled=“true”/<>按钮 id=“RunMyMacro” label=“运行我的宏” onAction=“MyMacro”/></group><<组 id=“dbCustomGroup2” label=“另一个自定义组”><control idMso=“ImportExcel” label=“从 Excel 导入” enabled=“true”/<>control idMso=“ExportExcel” label=“导出到 Excel” enabled=“true”/<>/group></tab></tabs></ribbon></customUI>

返回页首