How to set the default suggested filename to be displayed by the Save As dialog the first time a user saves a new
Article originally contributed by Dave Rado
with updates from Ibrahim Elnazak
and Greg Chapman
In a document that hasn't yet been saved, if you select File + Properties,
type a Title, and click OK, the title will be displayed as the “suggested
file name” in the Save As dialog the first time the document is saved.
However, due to a VBA bug, using:
ActiveDocument.BuiltInDocumentProperties(wdPropertyTitle) = "My title"
doesn't work (it doesn't affect the default SaveAs filename); and the
FileProperties dialog isn't directly accessible via VBA.
However, the following does the trick (with thanks to Ibby who first came up
with this workaround):
.Title = "My Title"
Important “gotcha”: Although this method does support long
filenames, unfortunately it doesn't support delimiters such as underscore. If you set the title to My_Title,
(as one does), the suggested filename will be My.doc. If you would like this
behaviour to be changed, I hope you'll contact
(You could get round this by intercepting the FileSave, FileSaveAll and
FileSaveAs commands, and by writing an AutoClose macro to intercept the event of
the user closing the document and being asked if they want to save changes, but
that would be very kludgy indeed, whereas setting the Document Title is
simplicity itself, provided you don't need it to support delimiters).
meantime, here's a work-around to the work-around by
Greg Chapman that ... well...
works around it :-)
If Documents.Count > 0 Then
Set dlgProp = Dialogs(wdDialogFileSummaryInfo)
' Establish title, subject, author, and keywords values
dlgProp.Title = MakeADocTitle("XXXX Form Options Specs.doc")
dlgProp.Subject = strTitle
dlgProp.Author = "Company Name"
dlgProp.Keywords = strKeywords
' Set the values
' Show the dialog for testing purposes
Function MakeADocTitle(ByVal strTitle As String) As String
arrSplit = Split(strTitle, " ")
MakeADocTitle = arrSplit(0)
For I = 1 To UBound(arrSplit)
MakeADocTitle = MakeADocTitle & Chr(95) & arrSplit(I)
MakeADocTitle = MakeADocTitle
See also: Getting help with calling Word's built-in dialogs using VBA (and why doing so can be much more useful than you'd think).