在Word中获取“另存为”文件名

6
在下面的代码中,文件名是硬编码的,但我希望用户能够选择它。
我正在阅读关于 GetSaveAsFilename 的内容,但在使用它时出现错误:"方法或成员未找到"。
fileSaveName = Application.GetSaveAsFilename _
    (fileFilter:="Excel Files (*.txt), *.txt")

这篇文章是针对Word 2010写的。我想知道是否正确认为GetSaveAsFilename在Word VBA中可用?

 Sub Macro3()
'
' Macro3 Macro
'
'
    ActiveDocument.SaveAs2 FileName:="Questionnaire01-05-20122.txt", _
        FileFormat:=wdFormatText, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=True, SaveAsAOCELetter:=False, Encoding:=1252, InsertLineBreaks:=False, _
         AllowSubstitutions:=False, LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
3个回答

5

我没有意识到Word没有GetSaveAsFileName或GetOpenFileName方法(Excel有这些方法)。但是它确实没有。相反,您可以尝试使用SaveAs FileDialog (2003, 2007, 2010):

Sub ShowSaveAsDialog()
Dim dlgSaveAs As FileDialog
Set dlgSaveAs = Application.FileDialog(FileDialogType:=msoFileDialogSaveAs)
dlgSaveAs.Show
End Sub

+1 参见这个示例,了解如何使用 FileDialog - Jean-François Corbett
Doug,我添加了一个稍微不同的答案,因为我认为上面的代码没有清楚地说明如何检索用户输入(我认为它需要类似于 dlgSaveAs.SelectedItems(1) 的东西) - brettdj
是的,我也有这个问题,但正如Brettdj所说,这并不能清晰地返回文件名。 - DevilWAH

4
您可以像这样向对话框提供包括文件名在内的默认路径,例如:
Sub SaveName()
    Dim strFileName As String
    Dim StrPath As String
    'provide default filename
    StrPath = "c:\temp\test.docx"
    With Dialogs(wdDialogFileSaveAs)
        .Name = StrPath
        If .Display <> 0 Then
            strFileName = .Name
        Else
            strFileName = "User Cancelled"
        End If
    End With
    MsgBox strFileName
End Sub

1
有没有一种方法只返回名称而不是完整路径?但我肯定可以解决:)感谢大家提供的示例。 - DevilWAH

0
Dim strFilePath, strFileName
strFilePath = "C:\Users\Public\Documents\"
strFileName = "put-filename-here.docx"

With Dialogs(wdDialogFileSaveAs)
    .Name = strFilePath & strFileName
    .Show
End With

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接