Hi Andy,
This isn't perfect, but I think it should give you a starting point.
Note that the "status" property is actually a 'custom' property and
hence will generate an error if it has not been initialised.
Dim errMsg() As String
Sub BuildFName()
Dim FName As String
ReDim errMsg(0)
On Error Resume Next
With ThisWorkbook
'Get Subject
FName = .BuiltinDocumentProperties("Subject")
If Err.Number Then ErrHandler ("Subject")
'Add Category
FName = FName & "_" & .BuiltinDocumentProperties("Category")
If Err.Number Then ErrHandler ("Category")
'Add Title
FName = FName & "_" & .BuiltinDocumentProperties("Title")
If Err.Number Then ErrHandler ("Title")
'Add Status
FName = FName & "_" & .CustomDocumentProperties("Status")
If Err.Number Then ErrHandler ("Status")
'Add extension
FName = Replace(FName, "/", "-") & ".xls"
End With
If Not ((Not errMsg) = True) Then
For i = 1 To UBound(errMsg)
errText = errText & IIf(i = 1, "", " & ") & errMsg(i)
Next
End If
MsgBox "Filename will be: " & FName & " but there were errors with
" & errText
End Sub
Sub ErrHandler(Property As String)
On Error Resume Next
Dim NewSize As Integer
NewSize = UBound(errMsg) + 1
ReDim Preserve errMsg(0 To NewSize)
errMsg(UBound(errMsg)) = Property
Err.Clear
End Sub
Cheers,
Ivan.