GetSaveAsFilename 默认文件夹

Posted

技术标签:

【中文标题】GetSaveAsFilename 默认文件夹【英文标题】:GetSaveAsFilename default folder 【发布时间】:2011-02-28 22:09:15 【问题描述】:

我在 VBA for Excel 中使用GetSaveAsFilename。有没有办法给这个默认文件夹打开?例如,我总是希望它在被调用时从C:\MyDocuments\Music 开始。

【问题讨论】:

【参考方案1】:

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(虽然保存时这个是无关紧要的)。

【讨论】:

完美,谢谢。有没有办法可以将“另存为类型”设置为默认值?它默认为最新/最高版本的 excel,但我想将其设置为较旧的“.xls”格式(2003 年及之前)。 嗯,也许this page 会有所帮助。但是,我担心 FileDialog 对象在 2003 年以后的 Excel 版本中不可用(反正我是这么说的)所以你的问题可能没有实际意义。 谢谢 - 我已经阅读了该页面......但是,我无法弄清楚。该报告是在 2007 年生成的,但我需要将输出保存为 2003 年的文档。它现在工作得很好。只是试图消除更多的绊脚石。谢谢! 我知道这个问题已经过时了,但我想我要补充一点,在 Excel 2007 中不推荐使用 FileSearch,而不是 FileDialog——它仍然存在并且很好(如果相信 msdn.microsoft.com/en-us/library/bb208503(v=office.12).aspx) 【参考方案2】:

这行得通:

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

但是,如果文件规范中有空格,它会变得有点棘手。例如,这个:

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

只到达我的文档并认为我的音乐是文件名。希望这会有所帮助。

【讨论】:

错过了结尾的 \。这使它成为路径,而不是文件【参考方案3】:

GetSaveAsFilename 之前使用ChDir

【讨论】:

【参考方案4】:

可以使用ChDir(使用@Mark Ransom 的答案),如本示例代码所示:

Dim workBook As workBook
Set workBook = ActiveWorkbook

ChDir (workBook.Path) ' Set Default folder

saveName = Application.GetSaveAsFilename(InitialFileName:=workBook.Name, _
                                         fileFilter:="Microsoft Excel Worksheet (*.xlsx), *.xlsx")

' Check whether the name specified is usable
If saveName <> False Then
    workBook.SaveAs Filename:=saveName, FileFormat:=xlOpenXMLWorkbook
End If

希望这能澄清一下 ChDir。

【讨论】:

以上是关于GetSaveAsFilename 默认文件夹的主要内容,如果未能解决你的问题,请参考以下文章

VBA:默认情况下,将具有名称的文件保存在特定的文件夹中

GetSaveAsFilename() 总是在我的文档中打开

VBA excel Application.getsaveasfilename 错误 13

单击“否”替换文件时如何返回保存消息框

Excel VBA中的文件保存对话框

excel只读文件默认保存在哪