假设您想要一个按钮,用户可以单击该按钮并将当前文件的副本另存为 PDF(文档):
Application.ActiveDocument.SaveAs2 fileName:="fileName.pdf", FileFormat:=wdFormatPDF
这很好用,用户会看到一个保存对话框,选择一个位置并保存文件,但是有一些事情是不正确的:
显示的类型与 VBA 中指定的类型不匹配,这怎么可能是正确的?即使在“另存为类型”下拉菜单中将“DOCX”显示为文件类型后,它仍然可以毫无问题地保存为“PDF”类型。此外,“fileName.pdf”也没有放在“文件名”框中,就好像对话框不知道 VBA 代码中设置的选项一样(这篇文章中也引用了同样的问题)。
更新 1
在再次查看我的代码后,我现在意识到 SaveAs2 方法没有显示对话框菜单,代码的正确版本(简化)可以描述为:
Dim selected As String: selected = Application.FileDialog(msoFileDialogSaveAs).Show()
Dim filePath As String
If selected <> 0 Then
filePath = Application.FileDialog(msoFileDialogSaveAs).SelectedItems(1)
Application.ActiveDocument.SaveAs2 fileName:=Split(filePath, ".")(0), FileFormat:=wdFormatPDF
End If
那么真正的问题(我猜)是如何让“Application.FileDialog”在“另存为类型”下拉菜单下显示您希望保存的正确类型,@PatricK 已经回答了这个问题。感谢大家的帮助,对于这个问题最初令人困惑的性质,我深表歉意。