Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/03/2008, 05:14
etxebe
 
Fecha de Ingreso: enero-2008
Mensajes: 61
Antigüedad: 16 años, 4 meses
Puntos: 0
Problema muy dificil con CommonDialog

Hola a todos:
Tengo un problemilla con el CommonDialog "Guardar como", concretamente para los casos en los que se quiere guardar el archivo con un nombre ya existente de un directorio, y se presenta la pregunta de si se quiere reemplazar el archivo. El codigo es el siguiente:("controles" es el nombre del common)

Private Sub mnuFileSaveAs_Click()
Dim nombre As String

5 With Controles
.DialogTitle = "Guardar como"
.CancelError = False
.Filter = "Archivo de texto (*.txt)|*.txt"
.ShowSave
If .FileName = vbNullString Then
Exit Sub
Else
nombre = Dir(Left(.FileName, Len(.FileName) - Len(.FileTitle)))
Do While Len(nombre) > 0
If nombre = .FileTitle Then
If MsgBox("El archivo " & .FileTitle & " ya existe. Desea reemplazarlo?", vbQuestion + vbYesNo) = vbYes Then
Exit Do
Else
GoTo 5
End If
End If
nombre = Dir()
Loop
End If
direccion = .FileName
nombre_archivo = Left(.FileTitle, Len(.FileTitle) - 4)
End With
Guardar_datos (direccion)
End Sub

El problema es que no puedo identificar si el usuario a pinchado "Guardar", "Cancelar" o cierra la ventana. La parte:

If .FileName = vbNullString Then
Exit Sub

funciona perfectamente, y cuando el usuario quiere guardar con un nombre existente, el msgbox tambien funciona bien. Sin embargo, en el caso de que se escriba un nombre existente, pero, se pulsa "Cancelar" o quiera cerrar la ventana, en vez de ocultarla, se me muestra el msgbox. Por lo tanto, necesito identificar estos tres botones para ejecutar la parte del msgbox solo cuando el usuario pinche "Guardar".

No se, e intentado explicar mi problema lo mejor posible. Espero que si se ha entendido mi problema, me podais ayudar con la solucion que busco, o sino otro codigo que haga lo que me propongo.

Gracias de antemano

Agur.