隐藏访问选项

时间:2011-10-26 18:35:57

标签: ms-access vba

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

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

4 个答案:

答案 0 :(得分:14)

在MS Access 2007和MS Access 2010中,可以控制“Backstage”的内容,而不是setting options来控制用户对应用程序的访问权限。所有图像和说明均适用于Access 2010,但2007年并没有太大差异。首先阅读Customize the Ribbon

后台

enter image description here

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

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

您需要一个名为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”。应该相当明显哪条线与Backstage的哪一部分有关。

您现在必须关闭并重新打开数据库(Compact&amp; Repair可能是执行此操作的最快方法,但请确保在使用此方法之前进行备份)。这将有很多开放和结束。

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

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

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

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

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

再次打开和关闭,然后从“选项”下的“功能区名称”中删除功能区。打开和关闭,你或多或少地回到你开始的地方。

答案 1 :(得分:1)

要添加到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>

答案 2 :(得分:1)

全部

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

这里的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>

答案 3 :(得分:0)

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

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