Jump to content

Comprobar si un fichero existe en la ruta actual


Recommended Posts

hola,

he creado con este pequeño código una macro que me crea una copia de mi fichero actual con la fecha del día. No sé cómo indicarle anteriormente que compruebe si existe en la ruta para que no haga nada. He visto ejemplos para comprobar con un nombre en concreto, pero no encuentro nada para que añada la fecha de hoy.

Muchas gracias!

 

Sub guarda()

Dim rutacopia As String, nbrecopia As String

rutacopia = \\Miruta\"

nbrecopia = "mifichero" & Chr(32) & "-" & Chr(32) & Format(Now, "ddmmyyyy")

ActiveWorkbook.SaveAs rutacopia & nbrecopia

End Sub

 

Link to comment
Share on other sites

1 hour ago, Maria_80 said:

hola,

he creado con este pequeño código una macro que me crea una copia de mi fichero actual con la fecha del día. No sé cómo indicarle anteriormente que compruebe si existe en la ruta para que no haga nada. He visto ejemplos para comprobar con un nombre en concreto, pero no encuentro nada para que añada la fecha de hoy.

Muchas gracias!

 

Sub guarda()

Dim rutacopia As String, nbrecopia As String

rutacopia = \\Miruta\"

nbrecopia = "mifichero" & Chr(32) & "-" & Chr(32) & Format(Now, "ddmmyyyy")

ActiveWorkbook.SaveAs rutacopia & nbrecopia

End Sub

 

He continuado la macro añadiendo esto, pero sigue sin hacer nada. Si el fichero existe, te dice que ya existe un fichero en la ruta con ese nombre, la idea es que si existe no haga nada y se salga, y si no existe lo cree. Esa parte sí funciona.

 

Sub guarda()

Dim FSO As Object

Set FSO = CreateObject("Scripting.FileSystemObject")

Dim rutacopia As String, nbrecopia As String

rutacopia = “mi ruta”

nbrecopia = "miarchivo" & Chr(32) & "-" & Chr(32) & Format(Now, "ddmmyyyy")

If Not FSO.Fileexists(nbrecopia) = True Then

ActiveWorkbook.SaveAs rutacopia & nbrecopia

Else

If Not FSO.Fileexists(nbrecopia) = False Then

   Exit Sub

End If

End if

End Sub

Link to comment
Share on other sites

9 minutes ago, Antoni said:

If Dir(nbrecopia) then
   Msgbox "El fichero ya existe"
   Exit Sub
End If

 

Hola, Antoni. 

He probado con esto también y no funciona... no sé qué sucede. Me sale igual la ventanita típica de excel avisando de que ya existe un libro con ese nombre y que si deseo reemplazarlo.

Piensa que es una call que tengo a esa macro para que al abrir el libro, con un SaveAs automáticamente se guarde con la fecha actual, salgo, guardo. Pero si en el mismo día vuelvo a abrir, no reconoce que ese fichero existe.

solo me funciona si le pongo en la comprobación dentro de Dir la ruta completa con el nombre del fichero tal cual está y la extensión.

No sé qué puede ser...

Link to comment
Share on other sites

Cita

solo me funciona si le pongo en la comprobación dentro de Dir la ruta completa con el nombre del fichero tal cual está y la extensión.

Por supuesto, has de poner la ruta completa.

Sube el archivo y le echaré un vistazo porqué no acabo de entender lo que cuentas.

Link to comment
Share on other sites

56 minutes ago, Antoni said:

Por supuesto, has de poner la ruta completa.

Sube el archivo y le echaré un vistazo porqué no acabo de entender lo que cuentas.

Claro! Me refiero a que si hago la llamada a la ruta con la variable dir(nbrecopia), no funciona. Si hago dir("rutacompelta\fichero.xlsm") funciona. Te adjunto el ejemplo! Algo se me escapa! Mil millones de gracias!

Dir(nbrecopia) 

ejemplo.xlsm

Link to comment
Share on other sites

Revisa esta macro:

Sub Guarda()
Dim rutacopia As String, nbrecopia As String, archivo As String
'--
rutacopia = "F:\Copias\"
nbrecopia = "Ejemplo " & Format(Now, "ddmmyyyy") & ".xlsm"
'--
archivo = rutacopia & nbrecopia
If Dir(archivo) = "" Then
   ActiveWorkbook.SaveAs archivo
Else
   MsgBox "El archivo " & archivo & " ya existe", vbInformation
End If
End Sub

 

Link to comment
Share on other sites

23 minutes ago, Antoni said:

Revisa esta macro:


Sub Guarda()
Dim rutacopia As String, nbrecopia As String, archivo As String
'--
rutacopia = "F:\Copias\"
nbrecopia = "Ejemplo " & Format(Now, "ddmmyyyy") & ".xlsm"
'--
archivo = rutacopia & nbrecopia
If Dir(archivo) = "" Then
   ActiveWorkbook.SaveAs archivo
Else
   MsgBox "El archivo " & archivo & " ya existe", vbInformation
End If
End Sub

 

Muchísimas gracias, Antoni. Funciona perfecto! Como siempre!

Link to comment
Share on other sites

On 5/10/2021 at 8:44 PM, Antoni said:

Revisa esta macro:


Sub Guarda()
Dim rutacopia As String, nbrecopia As String, archivo As String
'--
rutacopia = "F:\Copias\"
nbrecopia = "Ejemplo " & Format(Now, "ddmmyyyy") & ".xlsm"
'--
archivo = rutacopia & nbrecopia
If Dir(archivo) = "" Then
   ActiveWorkbook.SaveAs archivo
Else
   MsgBox "El archivo " & archivo & " ya existe", vbInformation
End If
End Sub

 

Hola, Antoni.

Necesito reabrir este hilo, porque me he encontrado con una problemática con la que no contaba. Como la solución me la diste tú y al final ha sido lo que funciona, quiero consultarte si esto es posible.

Tenemos en una ruta un fichero que se llama "Plantilla_Base", al abrirlo, automáticamente hace un Save As con la fecha actual y ya trabajas directamente desde ahí. De modo que si ese mismo día abres de nuevo Plantilla_Base se queda tal cual está y puedes hacer modificaciones, etc. Ya existe el del día actual. 

Me he encontrado con el siguiente problema. Hoy he abierto el fichero de ayer para revisarlo, es decir Plantilla_Base_17052021, y al abrirlo lo que sucede es que hace un Save As y le pone la fecha de hoy. He estado dándole vueltas y no encuentro solución.

¿Alguna idea? 

Gracias!

Link to comment
Share on other sites

Revisa esta macro:

Sub VerSiGuardar()
Dim fecha As String
fecha = Left(Right(ActiveWorkbook.Name, 13), 8)
fecha = Left(fecha, 2) & "/" & Mid(fecha, 3, 2) & "/" & Right(fecha, 4)
If Not IsDate(fecha) Then Call Guarda '<- tu macro que guarda el archivo
End If
End Sub

 

Link to comment
Share on other sites

1 hour ago, Antoni said:

Revisa esta macro:


Sub VerSiGuardar()
Dim fecha As String
fecha = Left(Right(ActiveWorkbook.Name, 13), 8)
fecha = Left(fecha, 2) & "/" & Mid(fecha, 3, 2) & "/" & Right(fecha, 4)
If Not IsDate(fecha) Then Call Guarda '<- tu macro que guarda el archivo
End If
End Sub

 

Fenomenal, Antoni! Funcionó, como siempre. He metido el código dentro del evento Workbook_open y va perfecto. Graciass!

 

Link to comment
Share on other sites

×
×
  • Create New...

Important Information

Privacy Policy