Atascado en esto desde hace dos dias...

bcnjam
17 de Diciembre del 2003
Hola a todos !

Estoy trabajando en un entorno Excel en el que grabo un fichero en una carpeta determinada.
Funciona perfectamente salvo en el caso que el usuario intente grabar el fichero con un nombre ya existente, entonces aparece el aviso de Nombre Duplicado...

Alguien tiene un codigo de ejemplo en el que controle la posibilidad que el usuario utilice un nombre de fichero ya existente en el cuadro de dialogo "Guardar como..." ?

Muchas gracias por adelantado!

sdemingo
17 de Diciembre del 2003
Hola,

aquí va un superejemplo ;-)

Dim rutaDoc As String
Dim fs As Object

Set fs = CreateObject("Scripting.FileSystemObject")

Me.cdGuardar.Filter = "Documentos (*.doc)|*.doc"
Me.cdGuardar.InitDir = "C:"

Me.cdGuardar.DialogTitle = "Guardar Documento"
Me.cdGuardar.ShowSave
If Trim(Me.cdGuardar.FileName) = "" Then
Msgbox "Dale un nombre"
Exit Sub
Else
If fs.FileExists(Me.cdGuardar.FileName) Then
If MsgBox("Este fichero ya existe, ¿Desea Sobreescribirlo?", vbYesNo + vbInformation, "Fichero existente") = vbNo Then
Exit Sub
End If
End If
End If

Saludos
sdemingo

sdemingo
17 de Diciembre del 2003
Uy,

se me olvidaba grabarlo ;-)

Para grabar sobreescribiendo, ponle True como parámetro final a al comando con el salves.

Saludos
sdemingo

bcnjam
17 de Diciembre del 2003
Hola sdomingo !

Gracias por tu atencion, pero no se si me explique bien, he utilizado la funcion GetSaveasFilename y con ello ya llego donde quiero e incluso guardo el archivo. Solo me falla el caso que el usuario intente entrar un nombre duplicado pues la aplicacion me responde con un aviso, y lo que no sé es como utilizar ese aviso en la programacion.

De hecho la macro que intento ejecutar es bien simple, la escribo debajo junto con lo que estoy buscando.


Dim FicheroGrabar As String
Dim Nombre_Fichero As String
FicheroGrabar = Application.GetSaveAsFilename(Nombre_Fichero)

If FicheroGrabar = "False" Then
Exit Sub
Else
Application.DisplayAlerts = True
ActiveWorkbook.SaveAs _
Filename:=FicheroGrabar, _
FileFormat:=xlWorkbookNormal

*************************************************************************
AQUI NECESITARIA INCORPORAR EL CODIGO PARA CONTROLAR LA RESPUESTA DEL USUARIO PARA EL CASO DE FICHERO YA EXISTENTE.
CUANDO EL FICHERO YA EXISTENTE, LA APLICACION TE MUESTRA UNA VENTANA DONDE TE AVISA DEL DUPLICADO Y TE OFRECE TRES OPCIONES: REEMPLAZAR, NO REEMPLAZAR O CANCELAR.

MI PREGUNTA ES COMO PUEDO CONTROLAR LA RESPUESTA DEL USUARIO A ESTAS OPCIONES. NO ENCUENTRO COMO REFERIRME A ELLA.

NO SE SI ME EXPLICO. MUCHISIMAS GRACIAS POR EL INTERES.

**********************************************************************

Application.DisplayAlerts = False
End If

bcnjam
17 de Diciembre del 2003
He estado mirando en las tropecientas mil paginas del foro por si encontraba una respuesta a esta cuestion, pero no he encontrado nada. Quizás lo que está mal es el planteamiento inicial de la macro que he creado. Alguien me puede decir si hay alguna solucion al problema o mas bien debo buscar un camino distinto para hacer lo que quiero.

Muchas gracias a todos