我在公共图书馆系统中工作,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这样的选项 - 我知道可以删除,但计算机和添加地点仍然存在。我试图通过给他们一个选择尽可能简单,因此工作人员不必花费大量时间来回答有关保存文档的位置的问题。这被解释了,你的下面的最终评论完成了我的任务,从而回答了我的问题,所以我正在回答这个问题,但是不会介意听到其他或更好的方法来愚弄后台。
答案 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
您可能需要进一步修改此操作以进行错误处理。
注意强>
此解决方案假定用户无法更改计算机上安装的加载项,也无法卸载现有的加载项等。