As I said in my question "On Error resume next" is not real proper programming
Unfortunately for VBA programmers, their object model is heavily populated with methods with no return values so determining the success of one isn't as straight-forward as it might be.
For this reason, "On Error" is often the only way to handle a situation and can sometimes be more efficient than the alternatives.
However, I would still treat it's use with caution (particulary in conjuction with GoTo) since it's a sad reality that many people don't realise the pitfalls of it's improper use.
In this example, I think detecting the error in this way is justified although you could switch displayalerts off to force the overwrite. If you need to manage the process in more detail, you could use something like this
Const strFilename As String = "D:\weg\Map1.xls"
Dim strMsgText As String
Dim msgboxresponse As Integer
strMsgText = "The file " & strFilename & " already exists." & "Do you want to replace the existing file?"
msgboxresponse = MsgBox(strMsgText, vbExclamation + vbYesNo, "Microsoft Office Excel")
If msgboxresponse = vbYes Then
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=strFilename, FileFormat:=xlNormal, _
Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, CreateBackup:=False
Application.DisplayAlerts = True
Else
msgboxresponse = MsgBox("File not saved", vbExclamation + vbOKOnly, "Microsoft Office Excel")
End If