Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

GetSaveAsFilename default folder

Tags:

excel

vba

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.

like image 466
loveforvdubs Avatar asked Feb 28 '11 22:02

loveforvdubs


2 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).

like image 103
Jean-François Corbett Avatar answered Nov 13 '22 15:11

Jean-François Corbett


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.

like image 32
Andrew Cowenhoven Avatar answered Nov 13 '22 15:11

Andrew Cowenhoven