|
|
|
 |
How to set the default suggested filename to be displayed by the Save As dialog the first time a user saves a new
document
|
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):
With Dialogs(wdDialogFileSummaryInfo)
.Title = "My Title"
.Execute
End With
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 email mswish@microsoft.com.
(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). In the
meantime, here's a work-around to the work-around by
Greg Chapman that ... well...
works around it :-) Sub ChangeProps()
'change properties
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
dlgProp.Execute
' Show the dialog for testing purposes
dlgProp.Show
End If
End Sub
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)
Next I
MakeADocTitle = MakeADocTitle
End Function
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).
|