Home » excel » excel – GetSaveAsFilename default folder

excel – GetSaveAsFilename default folder

Posted by: admin March 9, 2020 Leave a comment

Questions:

I am using GetSaveAsFilename in VBA for Excel. Is there any way to give this a default folder to open up to? For example, I always want it to start at C:\MyDocuments\Music when it is called.

How to&Answers:

The FileDialog object offers way more flexibility than GetSaveAsFilename (and its sibling GetOpenFilename). Example:

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

Note that an .InitialFileName longer than 256 characters will cause a run-time error.

See VBA help on FileDialog. It has quite a few useful properties, including e.g. AllowMultiSelect (though admittedly this one is irrelevant when saving).

Answer:

This works:

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

However, if you have spaces in the filespec it gets a little trickier. For example, this:

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

only gets as far as My Documents and thinks that My Music is the filename. Hope this helps.

Answer:

Use ChDir before GetSaveAsFilename.