Como verificar con macro si ya existe un archivo de excel en dos lugares diferentes antes de guardar

Saludos

tengo esta instruccion

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "C4" Then 'en esta celda generalmente va un numero
Dim NombreFichero As String
[C8] = Date
[D8] = Time
NombreFichero = Range("I7").Value 'I7 corresponde a la celda con el nombre de fichero, que es el numero de C4 o mas un texto otra celda
ChDir "C:\Users\edgar\Documents\2013\NUEVO\"

xxxxxxxxxxxxxxxx nueva instruccionxxxxxx


ActiveWorkbook.SaveAs Filename:=NombreFichero
ChDir "C:\Users\edgar\Documents\2013\"
End If
End Sub

pero antes de guardarlo necesito verificar que no exista el archivo en NUEVO y en 2013 y al ultimo se termine de guardar en NUEVO,

Gracias de antemano

1 Respuesta

Respuesta
1

Con la instrucción dir, sabes si existe o no.

Prueba la siguiente macro, primero revisa en 2013, si no está, revisa en nuevo, si no está, guarda en nuevo.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(False, False) = "C4" Then 'en esta celda generalmente va un numero
    Dim NombreFichero As String
    [C8] = Date
    [D8] = Time
    NombreFichero = Range("I7").Value 'I7 corresponde a la celda con el nombre de fichero, que es el numero de C4  o mas un texto otra celda
    ChDir "C:\Users\edgar\Documents\2013\"
    archivo = Dir(NombreFichero)
    If archivo = "" Then
        ChDir "C:\Users\edgar\Documents\2013\NUEVO\"
        archivo = Dir(NombreFichero)
        If archivo = "" Then
            ActiveWorkbook.SaveAs Filename:=NombreFichero
        End If
    End If
End If
End Sub

Saludos. DAM
Si es lo que necesitas.

Un saludo

Gracias ante todo por la contestación, pero seria bueno incluir un mensaje indicando en cual de los dos directorios se encuentra el duplicado, estuve intentando unas instrucciones pero me sale el mensaje haya o no el archivo,

te comento el archivo original es un formato que se va llenando con datos de clientes pero al guardarse se lo hace con el código de cliente que usualmente es un número incrementable del uno en adelante, cada cierto tiempo se extrae información de algunas de las celdas para un balance y se envía todos los archivos del directorio NUEVO al 2013, pero no debe existir duplicados en ninguno de los dos directorios, lo que pasa es que a veces ya se transfiere los archivos del NUEVO al 2013 y viene un cliente atrasado a retirar su orden y en eses momento se origina el código y el problema también se da es que la aplicación es usada por muchas personas y aveces ponen mal los códigos y eso me genera archivos con numero mal puestos y obviamente luego me dará como duplicado, esto ya me da muchos dolores de cabeza y soy novato con esto de las macros en VB, si algo me puedes sugerir sera bien recibido

Gracias

Atentamente Edgar

Tendrías que explicarme con más detalle y con ejemplos lo que haces paso a paso, lo que solicitaste es diferente a lo que ahora comentas.

Revisa la siguiente macro, le agregué los mensajes en caso de que ya exista el archivo

Private Sub Worksheet_Change(ByVal Target As Range)
'Mod.Por.DAM
If Target.Address(False, False) = "C4" Then 'en esta celda generalmente va un numero
    r1 = "C:\Users\edgar\Documents\2013\"
    r2 = "C:\Users\edgar\Documents\2013\NUEVO\"
    'r1 = "C:\trabajo\"
    'r2 = "C:\trabajo\prue1\"
    Dim NombreFichero As String
    [C8] = Date
    [D8] = Time
    NombreFichero = Range("I7").Value 'I7 corresponde a la celda con el nombre de fichero, _
        que es el numero de C4  o mas un texto otra celda
    ChDir r1
    archivo = Dir(NombreFichero & ".xlsm")
    If archivo = "" Then
        ChDir r2
        archivo = Dir(NombreFichero & ".xlsm")
        If archivo = "" Then
            ActiveWorkbook.SaveAs Filename:=NombreFichero
        Else
            MsgBox "Ya existe el archivo en la ruta " & r2
        End If
    Else
        MsgBox "Ya existe el archivo en la ruta " & r1
    End If
End If
End Sub

Revisa ahora la macro y si no es lo que pretendes, deberás finalizar esta pregunta y crear una nueva con los ejemplos que te pedí.

Saludos. DAM

Muy agradecido DAM por tu ayuda, básicamente solo necesitaba identificar donde esta el archivo duplicado y evitar que lo creen nuevamente, las lineas de instrucción que uso son las que te envíe y el segundo comentario es lo que m e pasa a menudo que por error o al llegar tarde cuando ya se transfirió al otro directorio crean duplicados con estos mensajes, que se incluyen espero ya no me cometan as errores. muy agradecido y una excelente ayuda, si necesito algo mas abriré otra pregunta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas