MACRO VBA que copie datos de un excel y los pegue consecutivamente en una sola tabla que se encuentra en otro excel

Anteriormente realice una consulta donde pedía que me proporcionaran una macro que me pegara unos datos de 3 tablas excel y los concatenara en una sola tabla, ahora necesito si no es mucha molestia y me ayuden a modificar la macro PERO, que la tabla de resultados se encuentre en un excel aparte, dentro de la misma carpeta de escritorio se encuentran los dos archivos, uno donde están las 3 columnas, y el otro archivo donde deseo que queden los resultados, ya que no se incluir rutas en las macros solicito de un experto.

Adjunto pantallazo para ser más claro y también adjunto la fórmula que me enviaron en la pregunta pasada, pero esta esta hecha para un mismo archivo. ¿Qué tendría que cambiar para partir que la macro arrastre los datos a copiar de otro archivo? ¿Dónde ingreso la ruta y como?

Mil gracias.

Esta es la macro que me proporcionaron:

Sub Tabla_Unica()
'Por Dante Amor
    Application.ScreenUpdating = False
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    cols = s
    For i = 3 To u
        Range("B" & i & ":G" & i & ",I" & i & ":N" & i & ",P" & i & ":U" & i).SpecialCells(xlCellTypeConstants, 23).Copy
        Range("W" & i).PasteSpecial Paste:=xlPasteValues
    Next
    Application.CutCopyMode = False
    Application.ScreenUpdating = True
    MsgBox "Fin"
End Sub

dice que pegue los datos en la columna "W" ya que es la misma hoja excel. Pero en el pantallazo acontinuacion deseo que empieza ya en la columna "A" los resultados, ya que es un archivo nuevo.

1 respuesta

Respuesta
1

Te dejo la macro con las instrucciones que necesitas. Debes ajustar algunos detalles que no se encuentran en tu macro original. Lee los comentarios que dejo en cada línea para saber lo que se está ejecutando y ajusta (nbre de libro columnas, extensión, etc)

Sub TablasVarias()
'x Elsamatilde
'guarda libro y hoja activa donde irá el resumen
    Set l1 = ThisWorkbook
    Set h1 = l1.Sheets(1)
    y = 2     'ajustar primer fila para el pegado
'la ruta del libro activo
    Ruta = l1.Path & "\"
    archi = "libroColumnas"
'se abrirá el libro indicado desde la misma carpeta ... ajustar extensión
    archi = Dir(Ruta & archi & ".xlsm")
    Set l2 = Workbooks.Open(archi)
    'se abre el segundo libro y se posiciona en la primer hoja... ajustar
    Set h2 = l2.Sheets(1)
    'a partir de aquí sigue tu macro..el libro abierto es el activo
    u = ActiveSheet.UsedRange.Rows(ActiveSheet.UsedRange.Rows.Count).Row
    cols = s  '????
    For i = 3 To u
        Range("B" & i & ":G" & i & ",I" & i & ":N" & i & ",P" & i & ":U" & i).SpecialCells(xlCellTypeConstants, 23).Copy
        'se pega en libro h1 a partir de la fila 'y'
        h1.Range("W" & y).PasteSpecial Paste:=xlPasteValues
        y = y + 1
    Next
    Application.CutCopyMode = False
    'al terminar con este libro se lo cierra sin guardar
    l2.Save
    l2.Close
MsgBox "Fin"
End Sub

Sdos y no olvides valorar la consulta (opciones: excelente o buena)

Hola Elsa,

Primero que todo te agradezco en el alma que te me ayudes con este tema, te cuento que trate de modificar lo que me dijiste pero no entendí que debo modificar.

Te cuento que el archivo donde están las 3 columnas se llama "librocolomnas.xlsm" y el excel donde quiero que queden concatenadas las 3 columnas consecutivamente en una sola tabla como mostré en la foto se llama "resultados.xlsm"

La ruta de acceso donde están los archivos esta en:

C:\Users\JUAN PABLO\Desktop\prueba\"aqui estan los 2 archivos" 

Lo que busco o quiero hacer es abrir el libro "resultados.xlsm" y en este libro ejecutar la macro y que esta extraiga los datos de las 3 columnas que están en el archivo "librocolumnas:xlsm" y me los ordene en una sola tabla .

La macro que copie inicialmente en la pregunta, lo hacía en una misma hoja y un mismo archivo perfectamente bien, pero me quise complicar un poco y hacerla en 2 archivos separados, así que por eso abrí una nueva pregunta. Veo que no es tan complicado pero tengo poco conocimiento y trate de ajustar como lo explicaste pero llevo una hora y no logro hacerlo.

Por eso te envío los nombres de los libros y la ruta por si me puedes explicar o ayudar ajustar esos valores dentro de la macro

Espero ser lo más claro posible en lo que necesito y me puedas entender

De igual manera procedo a calificar la respuesta como excelente porque se que dedicaste tiempo en ayudarme con esta pregunta y veo que estamos cerca, solo que no logro entender bien lo que quieres transmitirme para que ajuste los datos en la macro.

bendiciones. ;)

La macro está bien para esas hojas y no necesita la ruta porque se toma la del libro activo considerando que los 2 están en la misma carpeta:

Ruta = l1.Path & "\"

Ahora asegurate que:

- La macro está en un módulo del libro Resultados y desde allí se ejecuta.

- Se toma la primer hoja de cada libro. Si hay otras hojas debes asegurarte indicando su nombre en lugar del nro de índice. Por ej:

Sheets("Hoja1") en lugar de Sheets(1)

No comento nada de cómo se pasan los datos porque eso viene de macro anterior y no acusas defectos en ella. Por lo tanto ya con esto debiera correr perfectamente.

Sdos!

Hola Elsa mil gracias de nuevo por responder.

Te cuento que lo hice tal cual como lo indicas pero no me ejecuta la macro, tal vez algo estoy haciendo mal, así que voy a subir pantallazo de todo lo que me aparece para que me ayudes en mi error.

1./en el pantallazo 1 del lado izquierdo te confirmo los nombres de los archivos y sus extensiones, y también que están en una misma carpeta

2./ en la del centro muestro el contenido del archivo "libroColumnas.xlsm" donde contiene sus 3 columnas con lo que tienen en su interior, también informo que la información esta en la primera y única hoja del libro y su respectivo nombre de hoja "1".

3./ en la del lado derecho muestro el archivo "resultados.xlsm" que tiene su única tabla vacía lista para ser llenada por la macro que te hago la petición. También se puede apreciar que solo tiene una hoja y que su nombre de hoja es "1"

En esta segundo pantallazo te muestro la macro donde esta insertada y redactada, cuando le doy ejecutar muestra un recuadro que dice que no encuentra el archivo "libroColumnas.xlsm" y al darle al recuadro depurar, muestra en la línea 12 una cinta amarilla, pero no ejecuta.

Agradezco que me ayudes en este proceso y si estoy en algún error me ilumines, si hace falta que te suba los archivos con gusto lo hago

Mil gracias quedo muy atento y espero ser muy claro con la información para ayudarte a ayudarme. ;)

Claro que ayudas con la imagen ... si no la tuviera no creería lo que me comentas porque a mí no me falla. Como verás se abrió el libro correctamente y lo paré en el bucle solo para tomar la imagen.

Pero algunas instrucciones pueden responder diferente según las versiones Excel.

Probá dejando la definición de 'archi' de este modo:

archi = Ruta & archi & ".xlsm"

Sdos!

¡Gracias! PERFECTO Elsa. Tenias razón tal vez por la version de excel, pues la mía es algo antigua pero reemplace el (archi) por (Ruta & archi)

Pues funciono a la maravilla.

Mil gracias y muchas bendiciones ;)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas