2011-02-28 154 views

回答

2

FileDialog對象提供了比GetSaveAsFilename(及其兄弟GetOpenFilename)更靈活的方式。例如:

Dim tuneSaver As FileDialog 
Set tuneSaver = Application.FileDialog(msoFileDialogSaveAs) 

With tuneSaver 
    .Title = "Save this tune as..." 
    .InitialFileName = "C:\MyDocuments\Music\" 
    ' Set other properties here... 
    .Show 
End With 

需要注意的是超過256個字符的.InitialFileName將導致運行時錯誤。

請參閱VBA help on FileDialog。它有很多有用的特性,包括例如AllowMultiSelect(儘管當然這個在保存時是不相關的)。

+0

完美,謝謝。有沒有一種方法可以將「另存爲類型」設置爲默認值而不是默認值?這是默認的最新/最好的版本的Excel,但我想把它設置爲舊的「.xls」格式(2003年和以前)。 – thornomad 2011-07-25 14:27:33

+1

嗯,也許[此頁](http://msdn.microsoft.com/en-us/library/aa210589%28v=office.11​​%29.aspx)將有所幫助。但是恐怕'FileDialog'對象在2003以後的Excel版本中不可用(這就是我聽到的,無論如何),所以你的問題可能是沒有意義的。 – 2011-07-25 20:57:15

+0

謝謝 - 我已經閱讀過那一頁......但是,我無法弄清楚。該報告是在2007年生成的,但我需要將輸出保存爲2003年文檔。現在工作很好。只是想刪除一個更多的絆腳石。謝謝! – thornomad 2011-07-26 13:13:25

3

GetSaveAsFilename之前使用ChDir

3

這工作:

x = Application.GetSaveAsFilename(InitialFileName:="C:\mydocuments\music\", _ 
    fileFilter:="Text Files (*.*), *.*") 

但是,如果在文件規範有空格就有點棘手。例如,這個:

x = Application.GetSaveAsFilename(InitialFileName:="%USERPROFILE%\My Documents\My Music", _ 
    fileFilter:="Text Files (*.*), *.*") 

只獲得我的文檔,並認爲我的音樂是文件名。希望這可以幫助。

+1

錯過了「結束」。這使它成爲一條路徑,而不是文件 – 2011-03-01 06:24:20

+0

@chris:好的。它適用於尾隨\。 – 2011-03-01 13:31:11