¿Cómo puedo evitar el error 1004 en la importación de un .TXT?

Estoy importando archivos .TXT, de manera mensual (es un archivo diario), aunque en ocasiones no tengo el archivo de una fecha, por lo cual me aparece el error 1004 (excel no puede tener acceso al archivo), es decir, yo quiero que el bucle continué hasta el ultimo día sin importar que el archivo no exista, solo que me arroje un msgbox que me diga que no existe... Este es el código que llevo

Sub Macro()

If Sheets("Procedimiento").Range("D10") = "REVISAR" Then
MsgBox "Por favor valide la fecha, debido a que NO corresponde con el historico", vbCritical, "Validación de Fechas"
Sheets("Procedimiento").Select
End
Else
Application.ScreenUpdating = False
Sheets("Procedimiento").Select
Dim Fecha_Valoracion As String
Dim Nombre As String
Dim Ruta As String

Fecha_Valoracion = Range("Fecha_Valoracion")
Nombre = Range("Nombre")
Ruta = Range("Ruta")

'IMPORTA EL CIDT DE LA FECHA

Sheets("CIDT").Select
Cells.Select
'Selection.QueryTable.Delete
Selection.ClearContents
Errores:
CARPETA = Ruta + "\" + Nombre + ".TXT"
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;" + CARPETA, Destination _
:=Range("$A$1"))
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1254
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = True
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = True
.TextFileSpaceDelimiter = True
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
If Err.Number = 1004 Then
MsgBox "CIDT no encontrado, verifique en la carpeta"
End
End If
End With

End If
On Error GoTo Errores

End Sub

1 respuesta

Respuesta
1

H o l a:

Revisé tu macro y no veo un bucle, tampoco veo en qué momento le indicas la fecha, solamente tienes declarada la variable fecha, le asignas un valor a la variable fecha, pero en el nombre del archivo no utilizas la fecha.

El nombre del archivo solamente tiene la ruta y el nombre, si en la celda donde tienes el "nombre" ya tiene la fecha, entonces te anexo la macro para verificar que exista el archivo, si el archivo no existe, entonces te envía un mensaje de error.

Sub Macro()
'Act.Por.Dante Amor
    Application.ScreenUpdating = False
    Dim Fecha_Valoracion As String, Nombre As String, Ruta As String, Carpeta As String
    '
    Sheets("Procedimiento").Select
    Fecha_Valoracion = Range("Fecha_Valoracion")
    Nombre = Range("Nombre")
    Ruta = Range("Ruta")
    Carpeta = Ruta & "\" & Nombre & ".TXT"
    '
    If Sheets("Procedimiento").Range("D10") = "REVISAR" Then
        MsgBox "Por favor valide la fecha, debido a que NO corresponde con el historico", vbCritical, "Validación de Fechas"
        Sheets("Procedimiento").Select
        Exit Sub
    End If
    '
    If Dir(Carpeta) = "" Then
        MsgBox "CIDT no encontrado, verifique en la carpeta", vbCritical, "IMPORTAR TXT"
        Exit Sub
    End If
    'IMPORTA EL CIDT DE LA FECHA
    Sheets("CIDT").Select
    Cells.ClearContents
    With ActiveSheet.QueryTables.Add(Connection:="TEXT;" + Carpeta, Destination:=Range("$A$1"))
        .FieldNames = True:                     .RowNumbers = False
        .FillAdjacentFormulas = False:          .PreserveFormatting = True
        .RefreshOnFileOpen = False:             .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False:                  .SaveData = True
        .AdjustColumnWidth = True:              .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False:       .TextFilePlatform = 1254
        .TextFileStartRow = 1:                  .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = True:   .TextFileTabDelimiter = True
        .TextFileSemicolonDelimiter = True:     .TextFileCommaDelimiter = True
        .TextFileSpaceDelimiter = True:         .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1)
        .TextFileTrailingMinusNumbers = True:   .Refresh BackgroundQuery:=False
    End With
End Sub

Avísame si requieres de algo más.


':)
S a l u d o s . D a n t e A m o r
':) Si es lo que necesitas. Recuerda valorar la respuesta. G r a c i a s.

Buenas tardes de antemano muchas gracias para responder, la macro si me descarga los archivos del primer día al ultimo día del mes, lo que pasa es que, por ejemplo el día 18 no existe archivo entonces me para el for next con el error 1004 (depura) y aun existiendo archivos de los siguientes días se va a parar el process. Me gustaría que si no existe arrojara un msgbox y continuara hasta el final

Revise el código y me sirve, aunque tiene una inconsistencia si yo lo corro hoy siendo día 20, cuando pase a descargar el del 21 (no hay archivo de ahí adelante), entonces de saldrá el msgbox hasta el 31, es decir 11 msgbox seguidps a los que tendré que dar aceptar

H o l a:

Tu comentario es este:

"

por ejemplo el día 18 no existe archivo entonces me para el for next con el error 1004

"

Tal vez pusiste una macro diferente, ya que en la macro que pusiste no hay ninguna instrucción For Next.


Revisa bien tu macro y pon la macro correcta para poder revisarla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas