Macro que permita buscar automáticamente en un archivo con muchas hojas y copiar información en base a datos variables

Necesito ayuda con una macro la cual me gustaría que funcionara de la siguiente forma:

En un libro de excel llamado “Macro completado” tengo 2 hojas, la primera se llama “Números de parte solicitados” y en la columna A se colocan los datos que debemos buscar (el número de datos a buscar es muy variable y no siempre son los mismos datos). Ejemplo:

La hoja 2 llamada “Solicitud” tiene encabezados y es en esta hoja donde deberán pegarse los datos que se vayan encontrando. Ejemplo

 

El macro debe abrir una ventana emergente en la que permita que el usuario seleccione un libro, el cual siempre tendrá un número diferente de hojas. En ese archivo, se deberá comenzar a buscar uno por uno cada uno de los datos que se proporcionaron en la hoja “Números de parte solicitados”. Si no lo encuentra, no deberá de hacer nada; pero si encuentra el número en el archivo que abrió, deberá de copiarlo a la hoja “Solicitud”.

El problema surge debido a que en el archivo se van a encontrar varias coincidencias, pero el macro debe asegurarse de copiar el dato que salga en la hoja que se encuentre más hacia el final y debe copiar un bloque de columnas, ya que a cada dato buscado un número variable de filas de información.

Ejemplo:

Los datos vienen de este modo:

En este caso el macro toma el dato de “096396262DDD”, que se da en la hoja “Números de parte solicitados”, y lo busca en el archivo que el usuario selecciona, se da cuenta de que viene en las hojas 2,3,6 y 12 (que tienen diversos nombres), pero toma los datos de la hoja 12, por ser los últimos. Y copia el bloque y pega los datos en la hoja “Solicitud”, quedando así:

No siempre son bloques de 3 filas (si se hubiera buscado el número “662312211AAA” se hubieran pegado solo 2 filas”) y necesito que se peguen las fórmulas, no solo los datos. Lo único que siempre es constante es que los datos de cada fila van desde la columna A a la G.

Disculpen por poner tanta información pero quería que fuera lo más claro posible, me sería muy útil este macro.

Respuesta
1

Te anexo la macro, no mencionaste en qué fila de la hoja "Números de parte solicitados" van a empezar los números. La macro empieza desde la fila 1.

Sub CopiarInformacion()
'Por.Dante Amor
    ruta = ThisWorkbook.Path
    Set l1 = ThisWorkbook
    Set h1 = l1.ActiveSheet
    Set h2 = l1.Sheets("Solicitud")
    With Application.FileDialog(msoFileDialogFilePicker)
        .Title = "Seleccione archivo de excel"
        .Filters.Add "Archivo xls", "*.xls*"
        .AllowMultiSelect = False
        .InitialFileName = ruta
        If .Show Then
            Application.ScreenUpdating = False
            arch = .SelectedItems.Item(1)
            Set l2 = Workbooks.Open(arch)
            For i = 1 To h1.Range("A" & Rows.Count).End(xlUp).Row
                num = h1.Cells(i, "A")
                k = h2.Range("E" & Rows.Count).End(xlUp).Row + 1
                For j = l2.Sheets.Count To 1 Step -1
                    Set h = l2.Sheets(j)
                    Set r = h.Columns("E")
                    Set b = r.Find(num)
                    If Not b Is Nothing Then
                        ncell = b.Address
                        Do
                            h.Rows(b.Row).Copy h2.Rows(k)
                            k = k + 1
                            Set b = r.FindNext(b)
                        Loop While Not b Is Nothing And b.Address <> ncell
                        Exit For
                    End If
                Next
            Next
            l2.Close False
        End If
        Application.ScreenUpdating = True
        h2.Select
        MsgBox "Proceso terminado", vbInformation, "COPIAR INFORMACIÓN"
    End With
End Sub

No olvides valorar la respuesta.

Me faltó un detalle, tienes que ejecutar la macro en la hoja "Números de parte solicitados"

Tango una duda porque me pide el libro y cuando lo seleccionó y le doy aceptar, me vuelve a pedir otro muchas veces más. Y aunque le de cancelar varias veces sigue abriendome la ventana emergente.

Y si selecciono otro archivo me pide que seleccione una hoja de ese libro.

Se supone que funcione así o algo está fallando?

Y se me olvidó, si selecciono una hoja específica, me marca error.

Saludos

¿El libro que estás abriendo tiene vínculos?

¿Tal vez las fórmulas apunten a otros libros?

La macro no pide que selecciones una hoja, tal vez el libro que estás seleccionando tiene una macro que se ejecuta cuando abres el libro.

Intenta con un libro que no tenga vículos, es decir, abre tu libro y copia la información como valor en un nuevo libro, con ese nuevo libro realiza las pruebas.

Te anexo mi archivo "macro completado" y el libro26 con los que hice pruebas para que veas el funcionamiento de la macro.

https://www.dropbox.com/s/87547722u44k00s/macro%20completado.rar?dl=0 

Revisa mi ejemplo y me comentas

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas