【问题标题】:VBA to generate a default file name when Save As is selected in Word 2016在 Word 2016 中选择另存为时,VBA 生成默认文件名
【发布时间】:2016-01-06 18:34:23
【问题描述】:

我有 VBA,在 Word 2010 中,当用户选择“另存为文件”选项时,它会在“另存为”屏幕中默认一个文件名。 Word 2016 (Office 365) 有一个不同的界面,在出现“标准”另存为对话框之前选择保存位置(OneDrive、此 PC 等)的屏幕似乎破坏了生成指定默认文件的代码名字。

代码(标题简化)是

  Sub FileSaveAs()

  With Dialogs(wdDialogFileSaveAs)
    .Name = "MyTitle"
    .Show
  End With

  End Sub

如果我在Developer to Debug中运行代码,它可以正常工作,出现“另存为”屏幕并且文件名默认,但它在文件名默认为以前的文档名称的实时环境中不起作用。

基于Web研究,我尝试了其他代码来更改文档的属性,将名称放在标题中,因为当时应该在选择时默认,但也不起作用。

任何有关如何解决此问题的建议或建议将不胜感激。

谢谢!

16 年 1 月 11 日更新: 通过使用以下内容能够更接近一点: Application.DocumentBeforeSave 事件 这里的例子https://msdn.microsoft.com/en-us/library/office/ff838299.aspx 绑定到将事件与应用程序对象一起使用 例如这里https://msdn.microsoft.com/en-us/library/office/ff821218.aspx

必须添加

Cancel=True

到事件过程代码的末尾或另存为对话框将打开两次。 仍然有点笨拙,似乎仅限于在第一个用户生成保存事件之前运行,但几乎可以使用。

想分享我的发现,以防它帮助他人,但任何其他改进建议将不胜感激,因为它似乎仍然不是最好的解决方案。 再次感谢!

【问题讨论】:

    标签: vba office365 ms-word


    【解决方案1】:

    感谢您报告此事。我有一个潜在的解决方法,希望对您有所帮助。

    您能否使用 SendKeys 方法 (https://msdn.microsoft.com/en-us/library/office/gg278655.aspx) 将键盘快捷键(另存为对话框的 F12,完整列表:http://aka.ms/Tf6yv0)发送到应用程序,例如

    App.SendKeys("{F12}")
    

    何时需要显示“另存为”对话框?

    我希望这会有所帮助。再次感谢您提请我们注意此问题,我们将进一步调查根本原因。

    【讨论】:

    • 感谢您的解决方法,我会尝试一下。缺点是我希望有更直接的东西。我将代码放入的文档被约 70 人用作为实验生成个人工作说明的起点。只是试图自动化默认文件名以帮助标准化。您的选择会比我一直在尝试的事件处理程序更好,因为它会劫持所有在我的应用程序中不起作用的打开的 Word 文档的 SaveAs。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 2011-09-08
    相关资源
    最近更新 更多