Excel 2013 Backstage自定义问题

时间:2015-09-25 14:45:57

标签: xml excel vba excel-vba

我在公共图书馆系统中工作,Office 2013已经创建了我们的顾客保存文件的问题,我正在尝试简化该过程。我打算隐藏所有" save"后台的选项并创建一个名为" Save Here"消除这种困惑。

我已经拼凑了一些用于更改后台视图的customUI的XML,但是,我无法在xlsm文件中获得对VBA代码的回调才能正常工作。我还需要一种在Excel启动时使其工作的方法。

我尝试将启用Excel宏的文档放在XLSTART文件夹中,虽然这使得它在启动时工作 - 用户将直接编辑我的工作簿。如果我隐藏视图以使它们创建新页面,则customUI将无法工作。即使关闭文档时XLSTART中的文件,它也会提供" Microsoft Excel已停止工作.."所以我需要帮助。

最后,我尝试将VBA代码放入"本工作簿"在vba编辑器中,以及创建一个新模块并将其放在那里。如果我把它放在"这个工作簿"我收到一个错误,没有找到" SaveAction"宏。如果我把它放在模块中,它会更接近于工作,出现上述问题。

RIBBON XML

    <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
    <backstage>
           <button idMso="FileSave" visible="false"/>
           <button idMso="FileSaveAs" visible="false"/>
           <button idMso="FileOpen" visible="true"/>
           <button idMso="FileClose" visible="true"/>
           <button idMso="ApplicationOptionsDialog" visible="false"/>
           <button idMso="FileExit" visible="false"/>
           <tab idMso="TabInfo" visible="false"/>
           <tab idMso="TabRecent" visible="false"/>
           <tab idMso="TabNew" visible="false"/>
           <tab idMso="TabPrint" visible="true"/>
           <tab idMso="TabShare" visible="false"/>
           <tab idMso="TabHelp" visible="false"/>
           <tab idMso="TabSave" visible="false"/>
           <tab idMso="TabPublish" visible="false"/>
           <tab idMso="TabOfficeStart" visible="true"/>
       <tab id="MyTab" insertAfterMso="TabPrint" label="Save Here" ColumnWidthPercent="30">
          <firstColumn>                     
            <group id="FirstGroup" label="Save Here" helperText="Click here to Save">           
                <primaryItem>                       
                    <button id="BigButton" label="Patron Save Location" isDefinitive="true" onAction="SaveAction"/>                 
                </primaryItem>                      
            </group>                        
          </firstColumn>
       </tab>
    </backstage>
    </customUI>

EXCEL-VBA

    Sub SaveAction(control As IRibbonControl)
       'Saves any changes to the workbook.
       ActiveWorkbook.SaveAs
    End Sub

RE:在David的解决方案之后发表评论:

解释我想要完成的任务。当我们的顾客使用Office 2013并进入文件菜单时,这将启动Office Backstage - 包含一长串选项。由于他们不熟悉任何版本的Office,我们的很多顾客都会感到困惑。您可以在应用程序选项中禁用后台,但这不会禁用File&gt; SaveAs下的选项。 Skydrive这样的选项 - 我知道可以删除,但计算机和添加地点仍然存在。我试图通过给他们一个选择尽可能简单,因此工作人员不必花费大量时间来回答有关保存文档的位置的问题。这被解释了,你的下面的最终评论完成了我的任务,从而回答了我的问题,所以我正在回答这个问题,但是不会介意听到其他或更好的方法来愚弄后台。

1 个答案:

答案 0 :(得分:1)

您的XML中存在错误,应该是:columnWidthPercent而不是ColumnWidthPercent

  

我还需要一种在Excel启动时使其工作的方法。

将功能区代码放在XLAM加载项文件中并配置计算机,以便将此加载项加载到Excel Application。

将VBA回调放在标准代码模块中。

示例:

https://drive.google.com/file/d/0B1v0s8ldwHRYMUNWZFlFdVExYjg/view?usp=sharing

RE:评论

您需要修改您的程序,如:

Sub SaveAction(control As IRibbonControl)
   Dim fdlg
   Set fdlg = Application.FileDialog(msoFileDialogSaveAs)
   fdlg.Show
   fdlg.Execute
End Sub

您可能需要进一步修改此操作以进行错误处理。

注意

此解决方案假定用户无法更改计算机上安装的加载项,也无法卸载现有的加载项等。