Macros Importar Contenido De Varios Libros Csv A Un Libro Excel

Hola Expertos!!

Verán en el trabajo solicitamos copias de unas declaraciones que hacemos al estado, ellos nos lo envían en un archivo zippeado, al descomprimirlo tengo varios archivos *.csv, conteniendo por ejemplo:

********casillas.csv

*******retenciones.csv, etc

los asteriscos los documentos de identidad de cada empresa (trabajo en un bufete de contadores por lo que llevamos varias empresas y los códigos varían), lo que deseo es una macro que pueda importar el contenido de esos archivos CSV, en hojas diferentes que ya existen, por ejemplo *******casillas.csv su contenido sea copiado en una hoja llamada casillas, y de la misma forma retenciones a otra hoja con el mismo nombre.

Tengo una macro que importa un solo archivo CSV, pero me gustaría saber si hay la posibilidad de importar un conjunto de archivos a un libro basándose solo en la parte final del nombre del archivo.

Gracias de antemano a quienes puedan ayudarme!!!!!

1 respuesta

Respuesta
1

Puedes poner la macro que tienes para importar un archivo CSV.

¿Los archivo csv se encuentran en la misma carpeta?

Si puedes enviarme un par de archivos csv de ejemplo y tu archivo de excel con la macro para hacer pruebas.

Listo lo envíe a tu correo, gracias!

Esta es la macro

Sub importar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Importar")
    h1.Range(h1.[a2], h1.[a2].SpecialCells(11)).Clear
    ChDir l1.Path
    '
    arch = Dir("*.csv")
    j = 2
    Do While arch <> ""
        '
        existe = False
        a = Mid(arch, InStr(1, arch, "_") + 1)
        n = Left(a, InStrRev(a, ".csv") - 1)
        h1.Cells(j, "A") = n
        '
        For Each h In Sheets
            If h.Name = n Then
                existe = True
                Exit For
            End If
        Next
        If existe Then
            Sheets(n).Cells.Clear
            Set l2 = Workbooks.Open(Filename:=arch, UpdateLinks:=0)
            ActiveSheet.UsedRange.Copy
            l1.Sheets(n).Range("A1").PasteSpecial
            l2.Close
            h1.Cells(j, "B") = "Archivo importado"
        Else
            h1.Cells(j, "B") = "Este archivo no tiene hoja"
        End If
        arch = Dir
        j = j + 1
    Loop
    h1.Select
    MsgBox "Importación terminada", vbInformation, Date
    Application.ScreenUpdating = False
End Sub

Saludos.Dante Amor

No olvides valorar la respuesta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas