2012-05-01 58 views
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 

回答

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

+ 1初始化路徑是個好主意:) –

+1

有一件事情只返回名稱而不是完整路徑?但我確定我可以解決這個問題:)爲示例人士歡呼 – DevilWAH

4

我沒有意識到Word沒有GetSaveAsFileName或GetOpenFileName方法(Excel有)。但事實並非如此。相反,你可以嘗試另存爲FileDialog的(200320072010):

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

+1參見[這解決了如何使用'FileDialog'的例子](http://stackoverflow.com/questions/5148173/getsaveasfilename-default-folder/5165166#5165166)。 –

+0

Doug,我添加了一個稍微不同的答案,因爲我沒有想到上面的代碼明確指出如何檢索用戶條目(我認爲它需要類似於'dlgSaveAs.SelectedItems(1)') – brettdj

+0

yep我有這個,但是作爲Brettdj說這並不是最終返回文件名 – DevilWAH

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

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