Ciao Nicola, secondo me conviene che sfrutti l'application.dialogs all'interno dell'evento Workbook_BeforeSave, prova a giocherellarci un po'...
Per evitare che la finestrina compaia due volte in salvataggio (Application.Dialogs(xlDialogSaveAs).Show richiama questo evento) dovresti far interagire tutto con una variabile statica, prova a vedere se fa al caso tuo:
codice:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, _
Cancel As Boolean)
Static UnaVolta As Integer
UnaVolta = UnaVolta + 1
Application.Dialogs(xlDialogSaveAs).Show ("miofile2.xls")
If UnaVolta = 0 Then
Cancel = True
End If
UnaVolta = 0
End Sub
se poi l'utente ha le macro disabilitate sei fritto 
facci sapere se funge
L: