Macro que busque un campo especifico en otro archivo y extraiga datos de tres celdas

Necesito una macro la cual busque uno o varios archivos en formato de facturas usando como paramerto el nombre de una matricula especifica colocada en una celda del archivo origen y en dichas facturas y cuando las encuentre, devuelva los valores colocados en las celdas (N9 y H13) más la fecha que esta en la celda (N5) y las coloques a partir de las columnas (G11, D11) y la fecha en la (B11) en el archivo o plantilla.

Respuesta
1

1. ¿Nombre de la hoja donde vas a poner la matricula?

2. ¿En cuál celda vas a poner la matricula?

3. ¿Ejemplo de una matricula?

4. ¿En qué carpeta se van a buscar los archivos?

5. ¿El nombre del archivo es igual a la matricula? Es decir si pusiste: ¿12345 me voy a encontrar un archivo llamado 12345.xlsx?

6. Entonces tomo los datos de las celdas N9, H13 y N5, y los pongo en las celdas G11, D11 y B11, ¿pero de cuál hoja?

7. Siempre que se ejecute la macro pondrá el resultado en las celdas de la fila 11 o en la siguiente ejecución le tocará la fila 12 y luego la 13, ¿etc?

8. ¿El resultado va en el libro que va a tener la macro?

Saludos, Dante,

Respuesta acorde al numero de preguntas:

1)La hoja del archivo tendrá el nombre que asigne el sistema, es decir con el nombre(Hoja1), solo el archivo aparecerá con el nombre de matricula que yo le asigne, tanto dentro en la celda (B11) como el archivo mismo.

2) La celda asignada en el archivo origen o plantilla donde estará la matricula es (B11). La cual buscara entre varios archivos ubicados en una carpeta llamada (Carpeta de factura)los cuales van a tener esa matricula en la celda (N4).

3) Ejemplo de una matricula (A815)

4) La carpeta donde buscaran se llama (Carpeta de Factura)

5) La matricula aparece en la celda (N4) del archivo que debe buscar en la carpeta, pero el archivo tiene una macro que me hiciste que busca en la celda (A9) y guarda el archivo cuando imprimo la factura con la información que encuentra ahí lo cual es la matricula más el numero secuencial de esa factura, Ej: A8151.

6) Cunado encuentre el archivo en la carpeta que tiene dicha matricula, entonces toma los datos que están en las celdas (N9-H13 y N5 y los coloca en el archivo Origen o Plantilla en las columnas (G-D y B) a partir de las celda (11) hacia abajo.

7) Deberá colocar las informaciones dentro de las mismas columnas pero de manera secuencial es decir celda 11-12-13-etc

8) Correcto, el resultado ira a la plantilla u origen.

Te voy a enviar por correo un ejemplo de la plantilla y la factura o archivo que debe buscar la macro en la carpeta.

H o l a:

No me estás respondiendo de forma clara y breve mis dudas, así no puedo avanzar con la macro.

Te voy a poner nuevamente las preguntas y espero una respuesta breve:

1. ¿Nombre de la hoja donde vas a poner la matricula? SOlamente el nombre de la hoja.

2. ¿En cuál celda vas a poner la matricula? Solamente la celda.

3. ¿Ejemplo de una matricula? Solamente un ejemplo.

4. ¿En qué carpeta se van a buscar los archivos? Solamente la carpeta.

5. ¿El nombre del archivo es igual a la matricula? Es decir si pusiste: ¿12345 me voy a encontrar un archivo llamado 12345.xlsx? Solamente el nombre del archivo y el nombre de matrícula.

6. Entonces tomo los datos de las celdas N9, H13 y N5, y los pongo en las celdas G11, D11 y B11, ¿pero de cuál hoja? Solamente el nombre de la hoja.

7. Siempre que se ejecute la macro pondrá el resultado en las celdas de la fila 11 o en la siguiente ejecución le tocará la fila 12 y luego la 13, ¿etc? Solamente "SI fila 11" o "SI siguiente fila"

8. ¿El resultado va en el libro que va a tener la macro? Solamente Si o No.

Espero tus respuestas en ese orden y de forma breve.

S a l u d o s

Si te envío un archivo el cual hará la función de plantilla y dos archivos adicionales en los cuales debe buscar la plantilla para hacer la extracción, ¿te ayudaría eso?

Ok.

1) hoja1

2) En la plantilla(B2), en la factura (N4)

3) A815

4) carpeta de factura

5 Nombre del archivo A8151, matricula A815 en celda N4

6) hoja1 del archivo A8151

7) "SI siguiente fila"

8) si

Te envíe los archivos por correo

Hola, Dante,

Te respondí el correo que me enviaste, y pido disculpa por la confusión del archivo A8151, el cual es A815-1 así es como se guarda en la carpeta para que no sea remplazada por otra con la misma matricula.

Favor no dudar en pedirme datos,

MG

  H o l a:

Te anexo la macro

Sub BuscarMatriculas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    '
    If h1.[B2] = "" Then
        MsgBox "Poner matrícula"
        Exit Sub
    End If
    '
    ruta = ""
    ruta = l1.Path & "\"
    arch = Dir(ruta & h1.[B2] & "*.xls")
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets(1)
        u = 11
        Do While h1.Cells(u, "B") <> ""
            u = u + 1
        Loop
        h1.Cells(u, "G") = h2.[N9]
        h1.Cells(u, "D") = h2.[H13]
        h1.Cells(u, "B") = h2.[N5]
        l2.Close False
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Termiando"
End Sub

Hola Dante,

Solo para confirmar, ¿debo tomar la ultima macro que me enviaste donde se ve el directorio y no la primera?

¿Y la palabra (terminando) al final de la macro esta correcta?

Esta es la última macro, en el archivo que te envié va esta macro:

Sub BuscarMatriculas()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets("Hoja1")
    '
    If h1.[B2] = "" Then
        MsgBox "Poner matrícula"
        Exit Sub
    End If
    '
    ruta = "C:\documents and Settings\Administrador\Escritorio\carpeta de factura\"
    'ruta = l1.Path & "\"
    arch = Dir(ruta & h1.[B2] & "*.xls")
    Do While arch <> ""
        Set l2 = Workbooks.Open(ruta & arch)
        Set h2 = l2.Sheets(1)
        u = 11
        Do While h1.Cells(u, "B") <> ""
            u = u + 1
        Loop
        h1.Cells(u, "G") = h2.[N9]
        h1.Cells(u, "D") = h2.[H13]
        h1.Cells(u, "B") = h2.[N5]
        l2.Close False
        arch = Dir()
    Loop
    Application.ScreenUpdating = True
    MsgBox "Terminado"
End Sub

s a l u d o s

Ok.

Veo que le pusiste un botón para poder ejecutarla.

¿No es posible hacer que se ejecute ella sola cuando se habrá el archivo? Y si es posible, ¿necesito abrir otra solicitud?

Valora las respuestas que tienes pendientes y crea una nueva para mover la macro del botón a cuando abras el archivo.

Correcto,

Gracias de nuevo,  y te envio la nueva solicitud

MG

Dante note que al ejecutar la macro varias veces me repite la información en las columnas. Favor corregirme ese problema cuando tomes la otra solicitud que te hice.

SAludos,

MG

Mientras existan los archivo, seguirá leyendo los archivos y agregando la misma información, eso no se puede evitar, a menos de que se ponga un identificador, de cuál archivo ya se cargó para excluirlo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas