我有一个vba宏,对当前文档进行一些更改,并确定应该用于它的文件名-如果文档没有保存为该文件名,则应该提示用户这样做(但应该能够更改默认设置)。
我发现了两种可能,两者都不完美(我需要两者的混合)。
第一种方法:
Application.Dialogs(wdDialogFileSaveAs).Show
打开Save As
对话框,允许您更改文件的格式和名称,但默认文件名是旧文件名或文档的标题(直到第一个特殊字符,如blank或-
)(如果它尚未保存-更改文档的标题几乎没有帮助,因为建议的文件名将包含-
)。是否可以更改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 ?用
保存行Application.FileDialog(msoFileDialogSaveAs).Execute
窗口设置"查看选项卡-文件扩展名"可能会影响这个。