在网络的帮助下,我已经能够编写一些VBA来检查Word 2013模板文档上的内容控件,并在保存或保存时使用内容创建文件名选择时,使用具有相应名称的自定义子例程:
Sub FileSave()
If Left(ActiveDocument.Name, 4) = "PDR " Then
ActiveDocument.Save
Else
Call FileSaveAs
End If
End Sub
Sub FileSaveAs()
' too much to list, but in essence it
' checks contents of content controls
' and if properly populated build a string to use as a filename
' with the standard ActiveDocuments.SaveAs2 command
End Sub
当使用功能区中的标准保存按钮时,以及使用保存<时,使用[Ctrl]+S
/按[F12]
的键盘方法时,代码可以正常工作/ em>来自文件菜单。
但是,如果用户选择菜单选项并选择File \ Save As...
(即看起来像这样的那个 - standard Word file menu choice),那么我的FileSaveAs()
例程中的代码似乎被绕过,我们得到一个正常的另存为对话框,其中文档中的前几个单词被建议为文件名(即标准的Word行为)。
如何捕获菜单方法?
或者,我确实考虑过使用 CommandBars 在autonew()
子例程中的“文件”菜单中禁用“另存为...”,但我无法使其工作。我研究过的网站表明,从Word 2010开始,这种情况就不复存在了。
答案 0 :(得分:0)
我发现在Office 2007之后,您需要使用自定义UI编辑器来操作文件的XML。
然后我发现Office 2013以后的某些关键词发生了变化(当左上角的“Office”按钮被“文件”菜单替换时)。此链接不仅允许您下载自定义UI编辑器,还提供了Office 2010,2013和2016之间命令的细微详细信息:http://www.rondebruin.nl/win/s2/win005.htm
虽然上面的页面指的是Excel,但它似乎在整个Office中很常见。我用它来改变Word 2013文件,以便从“文件”菜单中成功隐藏“另存为”。下面是我用来解决我的特定问题的相关XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
<backstage>
<tab idMso="TabSave" visible="false" />
</backstage>
</customUI>