2011-02-28 73 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