VBA Word - 带有初始文件名的另存为对话框

标签 vba ms-word

我有一个 vba 宏,它对当前文档进行一些更改并确定应该用于它的文件名 - 如果文档没有保存为该文件名,但应该提示用户这样做(但应该能够更改默认设置)。

我发现了两种都不完美的可能性(我需要将这两种混合使用)。

第一种方法:

Application.Dialogs(wdDialogFileSaveAs).Show

打开Save As对话框并允许您更改文件的格式和名称,但默认文件名是文档的旧文件名或标题(直到第一个特殊字符,如空白或 - )(以防未保存)然而 - 更改文档的标题几乎没有帮助,因为建议的文件名将包含 - )。是否可以更改 Save As 中显示的初始文件名?对话?

第二种方法:
Application.FileDialog(msoFileDialogSaveAs).InitialFileName = filename
Dim choice As Integer
choice = Application.FileDialog(msoFileDialogSaveAs).Show
If choice <> 0 Then
    filename = Application.FileDialog(msoFileDialogSaveAs).SelectedItems(1)
    Call ActiveDocument.SaveAs(filename:=filename, FileFormat:=wdFormatDocumentDefault)
End If
FileDialog只会选择一个文件名,所以我们必须明确地保存它。
这种方法将显示 filename我想要,但如果用户将后缀更改为例如 .pdf该文件仍将保存在 .docx格式(使用后缀 .pdf)。对于用户需要与 .docx 不同的格式的罕见情况,我不打算在这里对情况进行巨大区分。 .有没有一种简单的方法可以使用第二种方法以正确的格式保存文件?

最佳答案

您是否尝试将 Call ActiveDocument.SaveAs 行替换为

Application.FileDialog(msoFileDialogSaveAs).Execute

关于VBA Word - 带有初始文件名的另存为对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32966984/

相关文章:

excel - 如何使用powershell复制多个Excel工作表并制作一个新的?

vba - Excel VBA : Optimal use of DateValue in VBA (or other method to compare dates)

vba - SAS - 如何屏蔽双引号(例如 "")

excel - 在 Excel 用户窗体中显示 "live"图表数据

c++ - Word 自动化 - 另存为

C#:在 Word 中打开 FileStream 中的 Word 文件以供读取

vba - 如何扩展 Word VBA Range.Find 返回的范围,直到段落结束

vba - 有没有办法在 Excel 2010 中查找和替换单元格引用值?编程语言?

ms-word - 如何将代码插入Word并另存为MD - writage插件删除代码格式

javascript - 从 Intranet 上的 Internet Explorer 打开 Word 文档