Bueno, parece ser que el problema "muy dificil" es por exceso de código sin sentido.
Pon especial atención al resultado del MsgBox, ya que lo estás poniendo al revés.
Prueba con este código y después nos comentas si te funciona o no.
Código:
Private Sub mnuFileSaveAs_Click()
Dim nombre As String
With Controles
.DialogTitle = "Guardar como"
.CancelError = False
.Filter = "Archivo de texto (*.txt)|*.txt"
.ShowSave
If .FileTitle = "" Or .FileName = "" Then Exit Sub
nombre = .FileTitle
If Len(Dir(nombre)) Then
If MsgBox("El archivo " & nombre & " ya existe. Desea reemplazarlo?", vbQuestion + vbYesNo) = vbNo Then
nombre = ""
.FileName = ""
Exit Sub
End If
End If
direccion = .FileName
nombre_archivo = Left(.FileTitle, Len(.FileTitle) - 4) ' esto sé para qué sirve
End With
Guardar_datos (direccion)
End Sub