【问题标题】:Hide Access Options隐藏访问选项
【发布时间】:2011-10-26 18:35:57
【问题描述】:

我注意到,即使禁用“使用访问特殊键”、禁用“显示导航窗格”和禁用功能区菜单,您也可以轻松访问“访问选项”转到当前数据库区域,并重新启用所有这些选项。

有没有办法完全隐藏 Access 2007 和 2010 中的“当前数据库”选项?

【问题讨论】:

  • 你想走多远?通过禁止包括 shift 键在内的所有内容,可以完全阻止自己更改数据库中的选项等。
  • 我已经有一个访问应用程序可以编辑数据库属性“AllowBypassKey”,所以 Shift 键不起作用。我只是希望能够以某种方式禁用“当前数据库”选项窗口。
  • 如果您取消选中 Options->Current Database 下的 Allow Full Menus,用户将无法访问 Options。
  • 在 Access 2010 下,如果您通过单击 Orb 选择隐私选项,则可以访问“当前数据库”选项。在 Access 2007 下,单击窗口顶部的下拉箭头,其中显示“自定义快速访问工具栏”,然后单击“更多选项...”,我可以访问“当前数据库”。

标签: ms-access vba


【解决方案1】:

在 MS Access 2007 和 MS Access 2010 中,而不是 setting options 来控制用户对应用程序的访问,可以控制“后台”的内容。所有图像和说明都适用于 Access 2010,但 2007 并没有太大不同。请先阅读Customize the Ribbon

后台

首先,右键单击导航窗格顶部的导航栏,然后单击快捷菜单上的导航选项。在“导航选项”对话框的“显示选项”下,选中“显示系统对象”复选框,然后单击“确定”。这将允许您查看您创建的表。请注意,这适用于所有数据库,因此您可能希望在完成后将其关闭。

接下来,在选项下,选择客户端设置并向下滚动到常规。您将看到显示加载项用户界面错误,请确保已选中它。

您将需要一个名为 USysRibbons 的表:

Create Table USysRibbons (ID Counter Primary Key, 
                          RibbonName Text(255),RibbonXml Memo)

您可能想为 RibbonName 添加一个唯一索引,否则您可能会得到多个同名的功能区。

您将需要一些 XML,您可以剪切并粘贴到新创建的表中。

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon startFromScratch="false">
       <!-- Ribbon XML -->
  </ribbon>
  <backstage>
   <button idMso="FileSave" visible="false"/>
   <button idMso="SaveObjectAs" visible="false"/>
   <button idMso="FileSaveAsCurrentFileFormat" visible="false"/>
   <button idMso="FileOpen" visible="false"/>
   <button idMso="FileCloseDatabase" visible="false"/>
   <tab idMso ="TabInfo" visible="false"/>
   <tab idMso ="TabRecent" visible="false"/>
   <tab idMso ="TabNew" visible="false"/>
   <tab idMso ="TabPrint" visible="false"/>
   <tab idMso ="TabShare" visible="false"/>
   <tab idMso ="TabHelp" visible="false"/>
   <button idMso="ApplicationOptionsDialog" visible="false"/>
   <button idMso="FileExit" visible="false"/>
  </backstage>
</customUI>

将功能区名称设置为“BackstageCustom”。哪条线与后台的哪个部分相关应该相当明显。

您现在必须关闭并重新打开数据库(压缩和修复可能是执行此操作的最快方法,但请确保在使用此方法之前进行备份)。这里面会有很多开合。

您现在可以转到选项->当前数据库并向下滚动到功能区和工具栏选项,在功能区名称下选择新创建的功能区。当您关闭选项时,您将收到一条警告,提示您必须关闭并打开数据库才能使更改生效。

当您这样做时,您将无法在后台看到 Options,除了最近的数据库列表之外,您也不会看到太多内容。查看上面的 XML,可以看到所有内容都设置为 false。

我认为最简单的方法是打开 USysRibbons 表并更改此行:

<button idMso="ApplicationOptionsDialog" visible="false"/>

<button idMso="ApplicationOptionsDialog" visible="true"/>

再次打开并关闭,然后从选项下的功能区名称中删除功能区。打开和关闭,您或多或少又回到了起点。

【讨论】:

  • 这适用于 Access 2007,但在“自定义快速访问工具栏”向下箭头中,我可以访问“更多命令...”并可以访问访问选项和当前数据库。在 Access 2010 中,在文件下,我有“隐私选项”,它直接将我引导至访问选项以及“更多命令...”。
  • 您可以将 start from scratch 更改为 true,除非您确保有额外的功能区,否则这应该会使应用程序无用。这是一个很大的课题。所有的色带都可以定制,AFAIK。另请参阅accessribbon.de/en/?Access_-_Ribbons:Ribbon_XML___Controls:QAT
  • 只是给未来读者的一个提示 - &lt;ribbon startFromScratch="true"&gt; 将停止快速访问工具栏的工作(这可能是可取的)。我花了一段时间才弄清楚这一点。很好的答案@Remou。
  • 对未来读者的另一个注意事项:Access 2013 在 FILE 菜单中有不同的选项,因此 XML 需要稍作修改。我将其发布为答案,以便我可以正确格式化代码。
【解决方案2】:

为了补充 Fionnuala 的出色答案,Access 2013 在 FILE 菜单中有不同的选项,因此需要稍微修改 XML。完全按照答案,但用这个替换 XML,这会隐藏“选项”菜单并留下“打印”和“退出”。

<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
  <ribbon startFromScratch="false">
       <!-- Ribbon XML -->
  </ribbon>
  <backstage>
   <button idMso="ApplicationOptionsDialog" visible="false"/>
  </backstage>
</customUI>

【讨论】:

    【解决方案3】:

    全部,

    我花了很多时间...在很多网站上...

    以下是 XML:

    • 禁用 QAT
    • 禁用“数据库选项”
    • 禁用“另存为”
    • 禁用“关闭”(这样您就可以以编程方式控制发生的情况)
    • 仅启用“主页”选项卡...我实际上是从头开始重建的

    这段代码几乎“完全”看起来像 MS Access 2013 中的标准“HOME”选项卡。

    您可以使用它来真正锁定您的应用......结合一些好的代码在启动时禁用特殊键等。

    来吧:

       <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
      <ribbon startFromScratch="true">
           <!-- Ribbon XML -->
           <tabs>
               <tab id="dbCustomHome" label="HOME" visible="true">
               <group id="dbViews" label="Views">
                       <control idMso="ViewsSwitchToDefaultView" size="large" label="View" enabled="true"/>
                   </group>
               <group id="dbClipboard" label="Clipboard">
                       <control idMso="PasteSpecial" size="large" label="Paste" enabled="true"/>
               <control idMso="Cut" label="Cut" enabled="true"/>
                       <control idMso="Copy" label="Copy" enabled="true"/>
                       <control idMso="FormatPainter" label="Format Painter" enabled="true"/>
                   </group>
               <group id="dbSortFilter" label="Sort and Filter">
                       <control idMso="FiltersMenu" size="large" label="Filter" enabled="true"/>
               <control idMso="SortUp" label="Ascending" enabled="true"/>
                       <control idMso="SortDown" label="Descending" enabled="true"/>
                       <control idMso="SortRemoveAllSorts" label="Remove Sort" enabled="true"/>
                       <control idMso="SortSelectionMenu" label="Selection" enabled="true"/>
                       <control idMso="FilterAdvancedMenu" label="Advanced" enabled="true"/>
                       <control idMso="FilterToggleFilter" label="Toggle Filter" enabled="true"/>
                   </group>
               <group id="dbRecords" label="Records">
                       <control idMso="DataRefreshAll" size="large" label="Refresh All" enabled="true"/>
               <control idMso="GoToNewRecord" label="New" enabled="true"/>
                       <control idMso="RecordsSaveRecord" label="Save" enabled="true"/>
                       <control idMso="Delete" label="Delete" enabled="true"/>
                       <control idMso="RecordsTotals" label="Totals" enabled="true"/>
                       <control idMso="SpellingAccess" label="Spelling" enabled="true"/>
                       <control idMso="RecordsMoreRecordsMenu" label="More" enabled="true"/>
                   </group>
               <group id="dbFind" label="Find">
                       <control idMso="FindDialog" size="large" label="Find" enabled="true"/>
               <control idMso="ReplaceDialog" label="Replace" enabled="true"/>
                       <control idMso="GoToMenuAccess" label="Go To" enabled="true"/>
                       <control idMso="SelectMenuAccess" label="Select" enabled="true"/>
                   </group>
               <group id="dbTextFormat" label="Text Formatting" centerVertically="true">
                <box id="TopBx">
                           <control idMso="Font" enabled="true"/>
                   <control idMso="FontSize" enabled="true"/>
                   <buttonGroup id="buttonGroup_TopRow">
                               <control idMso="Bullets" enabled="true"/>
                               <control idMso="Numbering" enabled="true"/>
                               <separator id="separator1" />
                               <control idMso="IndentIncrease" enabled="true"/>
                               <control idMso="IndentDecrease" enabled="true"/>
                               <separator id="separator2" />
                               <control idMso="AlignLeftToRightMenu" enabled="true"/>
                           </buttonGroup>
                        </box>
                        <box id="BottomBx">
                            <buttonGroup id="buttonGroup_BottomRow">
                               <control idMso="Bold" enabled="true"/>
                               <control idMso="Italic" enabled="true"/>
                               <control idMso="Underline" enabled="true"/>
                               <separator id="separator3" />
                               <control idMso="FontColorPicker" enabled="true"/>
                               <control idMso="TextHighlightColorPicker" enabled="true"/>
                               <control idMso="FontFillBackColorPicker" enabled="true"/>
                               <separator id="separator4" />
                               <control idMso="AlignLeft" enabled="true"/>
                               <control idMso="AlignCenter" enabled="true"/>
                               <control idMso="AlignRight" enabled="true"/>
                               <separator id="separator5" />
                               <control idMso="DatasheetGridlinesMenu" enabled="true"/>
                               <separator id="separator6" />
                               <control idMso="FontAlternateFillBackColorPicker" enabled="true"/>
                            </buttonGroup>
                        </box>
                   </group>
               </tab>
           </tabs>
      </ribbon>
      <backstage>
          <tab idMso="TabSave" visible="false" > </tab>
          <button idMso="ApplicationOptionsDialog" visible="false"/>
          <button idMso="FileCloseDatabase" visible="false"/>
      </backstage>
    </customUI>
    

    【讨论】:

      【解决方案4】:

      由于使用[快速访问工具栏] - [自定义] 访问选项仍然存在后门入口,因此使用与 Fionnuala 相同的方式的另一个简单解决方案可能是:

      <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
        <commands>
               <command idMso="ApplicationOptionsDialog" enabled="false"/>
        </commands>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多