Copiar un rango desde otro archivo Excel VBA

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ก.ค. 2021
  • En el capítulo de hoy os mostraré una macro muy sencilla para poder copiar un rango de un archivo a otro con tan sólo presionar un botón.
    ⏲Índice de capítulos:
    00:35 Demo
    01:28 Código VBA explicado al detalle
    06:26 Función Application.GetOpenFileName
    09:20 Función Application.Workbooks.Open
    11:15 Seleccionar un rango con CurrentRegion
    16:45 Seleccionar rango con xlToRight y xlDown
    17:35 Formas de Pegado especial
    22:15 Otro código para abrir un archivo
    25:05 Insertar un botón en la hoja
    26:15 Avance próximo vídeo
    👍SUSCRÍBETE, es gratis.
    🌐Búscame en:
    Mi web: exceleate.my.canva.site/
    Instagram: / exceleate_oficial
    Facebook: / exceleateoficial
    🏍Mi otro canal: aquí comparto mis salidas moteras.
    • Harley, Indian e Intru...
    Enlace a un canal amigo:
    / marisol7140
    Todas las Aplicaciones están realizadas en Excel 64 bits.
    Los que tengáis la versión de 32 bits es posible que los botones e imágenes
    salgan con un tamaño diferente.

ความคิดเห็น • 53

  • @enriquepizzuto9056
    @enriquepizzuto9056 11 หลายเดือนก่อน +1

    Explicado perfectamente, muy claro y didáctico, gracias por el trabajo que se ha tomado en hacerlo.

    • @ExcelEate
      @ExcelEate  11 หลายเดือนก่อน

      Gracias

  • @Prometheusxz
    @Prometheusxz 2 ปีที่แล้ว +2

    Hola, reciba un cordial saludo
    Es mi primera vez utilizando Macros, y había visualizado en otros canales algunos tutoriales sobre este tema pero realmente no había logrado entender.
    Con este video logré hacer la macro que quería para las actividades de mi trabajo.
    Está muy bien explicado.
    Muchas gracias

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว +1

      Muchas gracias Carlos. Saludos

  • @ricardovalle1376
    @ricardovalle1376 ปีที่แล้ว +1

    El mejor video con explicación que he visto

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Muchas gracias. Saludos

  • @ricardovalle1376
    @ricardovalle1376 ปีที่แล้ว +1

    Con la modificación me sale PERFECTO
    MUCHÍSIMAS GRACIAS

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Gracias a ti. Saludos

  • @ElCanalDeNito
    @ElCanalDeNito 3 ปีที่แล้ว +1

    Hola Juan, interesante tip.
    A ver si subes más de este estilo.
    Un abrazo 👍

  • @samuelfranciscogarcia1440
    @samuelfranciscogarcia1440 3 ปีที่แล้ว +2

    Me encantan tus métodos. Podrías hacer un curso de SOLVER de básico hasta avanzado por favor. Gracias 🗻🏟

    • @ExcelEate
      @ExcelEate  3 ปีที่แล้ว +2

      Gracias Samuel, ahora tengo varios proyectos en marcha pero lo tendré en cuenta. Saludos

  • @marck1312
    @marck1312 2 หลายเดือนก่อน +1

    Gracias por el Video esta muy bien explicado, consulta si deseo copiar solo algunas columnas especificas. nuevamente gracias por el tiempo.

    • @ExcelEate
      @ExcelEate  2 หลายเดือนก่อน +2

      Pues, tal como explico en el vídeo, debes seleccionar el rango a copiar. Este puede ser cualquiera (una columna, una fila, una celda, etc)

    • @marck1312
      @marck1312 2 หลายเดือนก่อน

      Gracias Si funciona, pero que pasa si quiero copiar digamos la columna B, E y M del archivo origen y pegarlo en el archivo destino en las columnas A,B y C, Graciss por su tiempo

    • @marck1312
      @marck1312 2 หลายเดือนก่อน +1

      Coloque uno por código de copiado y pegado por cada columna antes del código de cerrar ventana y funciona. Copia columnas independientes. En el código de pegado puse en donde quería copiarlo

    • @ExcelEate
      @ExcelEate  2 หลายเดือนก่อน

      @marck1312
      Estupendo!
      Saludos

  • @Prometheusxz
    @Prometheusxz 2 ปีที่แล้ว +1

    Hola
    Una consulta, estoy notando que está macro extrae los valores de 1 pestaña en específico.
    Pero si quisiera extraer datos de varias pestañas utilizando está misma macro, que código podría agregar?
    Que automáticamente pase por cada hoja y copié lo que requiero y lo pegue ordenadamente en la hoja destino
    Saludos

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว +1

      Hola Carlos, pues deberías especificar hoja de origen y hoja de destino (una a una).
      Saludos

  • @ricardovalle1376
    @ricardovalle1376 ปีที่แล้ว

    Al ver el video entiendo que siempre copia despues del último asiento, en este caso A5,. Al decir que copie ¿que tengo que poner en Range("A"& uf) para siempre pegue en el mismo rango, por ejemplo (C11:H25).
    Muchas Gracias

  • @luisanibalperezramirez6872
    @luisanibalperezramirez6872 2 ปีที่แล้ว +1

    Excelente video, pregunta, si mensualmente recibo un execel por ejemplo llamado XTenero2022 y el mes siguiente recibo otro actualizado XTfebrero2022, como puedo hacer para que cuando ponga en una carpeta la última actualización mi macro tome ese ultimo archivo y se actualicen los datos siempre del ultimo mes colocado?

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว +2

      Hola Luis, lo que yo haría es crear un combobox que mostrara todos los archivos de esa carpeta y, simplemente, seleccionar el que corresponda y listo. Es lo más fácil.
      Saludos

    • @luisanibalperezramirez6872
      @luisanibalperezramirez6872 2 ปีที่แล้ว

      @@ExcelEate Hey!, Gracias por responder, son nuevo en macro realmente, investigare sobre esa función, creo tener una idea de lo que me recomiendas!, me toca investigar, veré si en tu canal hay algún video sobre primero!.. gracias!

  • @angelparrah
    @angelparrah 9 หลายเดือนก่อน

    Gracias por el video Juan
    Quería consultar como hacer si el archivo desino tiene un formulario auto_open .
    Mi caso, existe una tienda principal y dos sucursales, cada quien tiene la misma macros para compras mensuales (las macros de las sucursales tienen un botón para exportar datos a la macro principal) cada fin de mes las sucursales envían sus compras mensuales, las mismas que se insertan o adicionan a la hoja de las compras de la tienda principal y el resultado de todo ello, la información, (compras de principal + sucursales) va a contabilidad para la declaración de los impuestos, el problema está que la macro principal tiene un formulario autoOpen, entonces al exportar los datos se inicia el formulario y no se puede insertar las filas con los datos que llegan de las sucursales.
    Gracias

    • @ExcelEate
      @ExcelEate  9 หลายเดือนก่อน

      Gracias, Ángel. Habría que anular el auto open. En cualquier caso, tendría que ver tu proyecto al detalle para entenderlo y poder asesorarte, pero eso tendría un coste.
      Saludos

  • @stewartguerrero3086
    @stewartguerrero3086 2 ปีที่แล้ว

    Hola Juan excelente tip, Juan me puedes ayudar con una consulta por favor, como sería por decir cuando existe una base de datos y esta se actualiza constantemente desde un formulario y solo necesito pasar los datos que se actualizan a un libro nuevo (los datos empiezan por ID en la columna A y luego todos los datos personales en las siguientes columnas , de antemano muchas gracias por colaboración!

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว

      Hola Stewart, podrías hacerlo capturando la fecha en la que se actualiza y tomar los datos, a partir de esa fecha, y copiar/pegar en un libro nuevo.
      Saludos

    • @jonathancastro2574
      @jonathancastro2574 2 ปีที่แล้ว

      Se puede realizar una macros para actualizar los datos, reemplazando los antiguos, estos últimos, borrándolos o almacenándolos como respaldo... Pero ya es algo de mucho trabajo 😅👌

  • @jonathancastro2574
    @jonathancastro2574 2 ปีที่แล้ว

    Buen material, pero quería preguntarle por qué no utilizó la otra forma de pegado 🙄 el que menciono, es donde en la línea de código donde compiamos (".copy") poner la ruta de destino al lado, ejemplo:
    RutaOrigen.copy RutaDestino.paste
    O algo así, recuerdo haber visto y utilizado ese método hace un par de años, pero lo olvidé por no ocuparlo 😅👌

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว

      También podría hacerse así.

  • @elvisvelarde4087
    @elvisvelarde4087 9 หลายเดือนก่อน +1

    Donde puedo descargarlo estiamdo

    • @ExcelEate
      @ExcelEate  9 หลายเดือนก่อน +1

      Hola, esto forma parte del curso de macros en Excel y no es descargable.
      Gracias por tu interés.
      Saludos

  • @angiebarrios9429
    @angiebarrios9429 2 หลายเดือนก่อน

    Excelente video! sin embargo tengo una consulta... cuando corro el código me sale el siguiente error "Variable de objeto o bloque With no establecido" no sé cómo corregirlo... Gracias!

    • @ExcelEate
      @ExcelEate  2 หลายเดือนก่อน

      Hola, qué versión de Office tienes? Si es anterior a 2019 no funcionará

  • @manuelsanchezg4638
    @manuelsanchezg4638 2 ปีที่แล้ว +1

    hola, una pregunta y si quiero copiar por ejemplo desde el mismo archivo pero en otra hoja como lo podria hacer, muchas gracias por su ayuda

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว +1

      Hola Manuel, pues podrías hacer algo parecido a esto:
      Worksheets("Sheet1").Range("A1:D4").Copy destination:=Worksheets("Sheet2").Range("E5")
      Es decir, copiarías el rango A1:D4!de la hoja 1 al rango E5 de la hoja 2.
      Espero que te sea de ayuda.
      Saludos

    • @manuelsanchezg4638
      @manuelsanchezg4638 2 ปีที่แล้ว

      @@ExcelEate Hola, Disculpa otra preguntay si el rango siempre va a ser diferente: por ejemplo el rango de columna seran las misma pero el rango de fila es diferente, nuevamente gracias por su ayuda

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว

      Hola Manuel, pues deberías calcular el número de filas y almacenarlo en una variable. Después construyes el rango con esa variable. Supongamos que la última fila es igual a 150; guarda ese número en una variable llamada fila, así podrías referirte a ese rango como sigue:
      Range(“A1:A” & fila)
      Espero haberte ayudado.
      Saludos

  • @fabiansaavedra1221
    @fabiansaavedra1221 ปีที่แล้ว

    Hola, Relaizando la Macro pero con el ejercicio para que copie de una archivo con nombre fijo, me aparece un error en:
    abrirLibro.Close False.
    Por lo que tratando de corregir esto se me ocurrio poner:
    Windows ("archivo1.xlsb"). Close False
    Me podra indicar de favor, si esto es correcto y otra consulta: Para poder guardar el archivo con un nombre especifico ubicado en una celda del mismo libro a guardar, que comando puedo usar. Gracias.

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Hola Fabián, en cuanto al primer error no describes qué tipo de error es.
      Para la segunda pregunta podrías utilizar algo así:
      Sub SaveWithVariable()
      Dim MyFile As String
      MyFile = ActiveWorkbook.Name
      ActiveWorkbook.SaveAs Filename:="E:\User\Fabian\" & MyFile
      End Sub

  • @ricardovalle1376
    @ricardovalle1376 ปีที่แล้ว

    Como ya dije soy un principiante. Acabo de escribir toda la macro y me funciona toda la macro hasta llegar a la orden de pegar que me da error en esa linea ThisWorkbook........... , no pega en ningun sitio. NO SE QUE HACER.
    Me gustaría que pegase en un rango fijo, por ejemplo (C11:H25)
    Gracias

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว

      Para pegar en un rango fijo escribe esto:
      ThisWorkbook.Worksheets(“nombre de tu hoja”).Range(“C11:H25”).PasteSpecial xlPasteAll
      No olvides las comillas.
      Ya me dirás

  • @ricardovalle1376
    @ricardovalle1376 ปีที่แล้ว +1

    Soy un principiante, ¿desde donde puedo bajar el archivo o macro?

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Hola Ricardo, en este caso no es posible, sin embargo, si sigues las explicaciones del vídeo, podrás hacerlo fácilmente. Saludos

  • @leonelretamal9042
    @leonelretamal9042 ปีที่แล้ว

    Hola una consulta, al utilizar este código me reescribe los valores encima de los anteriores y no buscar la celda vacía, a que se puede deber? tengo el mismo código

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Pues eres el primero que reporta ese error. No lo entiendo. ¿Has modificado el código? ¿Has tenido en cuenta la función que halla la primera celda vacía?

    • @leonelretamal9042
      @leonelretamal9042 ปีที่แล้ว +1

      @@ExcelEate amigo ya encontré el error, no consideré la celda donde estaba trabajando jajaja mucha gracias. Por otro lado tengo una consulta, si quiero pasar 3 columnas desde una tabla de otro archivo, tienes algún tips? .. te cuento, necesito extraer 3 columnas no continuas de una tabla desde otro archivo y dejarlas juntas en el nuevo archivo. Pero no se me ocurre como traerlas 😭😭

    • @leonelretamal9042
      @leonelretamal9042 ปีที่แล้ว

      Se supone que los archivos que importare siempre tienen el mismo orden pero si puedo recorrerlos sería aún mejor para copiar las 3 columnas que necesite independiente del orden 🤔

    • @ExcelEate
      @ExcelEate  ปีที่แล้ว +1

      Pues es parecido a este ejercicio. Si sigues el vídeo donde explico el código, y si sabes algo de VBA, podrás adaptarlo. Es fácil.
      Saludos

  • @richardwilmarsalascaballer8746
    @richardwilmarsalascaballer8746 2 ปีที่แล้ว

    BUENAS TARDES ESTIMADO, QUISERA HACER UNA CONSULTA PARA PODER REALIZAR LO QUE SE PUEDE APRECIAR EN EL SIGUIENTE LINK DEL VIDEO: th-cam.com/video/OSkwQnXQGPo/w-d-xo.html QUISERA QUE ME ORIENTE EN LA IMORTACION DE UN ARCHIVO EN CSV DE EXCEL A UNA PLANILLA CONFIGURADA Y LO MAS IMPORTANTE COMO HACER PARA QUE LAS CELDAS (POSICION ORIGINAL EN CSV) SE ACOMODEN EN LOS TITULOS CONFIGURADOS (10.- Planilla de Replanteo con AutoCAD Civil 3D 2018 y TD Excel DG-2014), SALUDOS.

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว +1

      Hola Richard, si tienes conocimientos básicos de VBA, podrías hacerlo con una macro. Prueba con la grabadora de macros y luego adaptas el detalle.
      Saludos

    • @richardwilmarsalascaballer8746
      @richardwilmarsalascaballer8746 2 ปีที่แล้ว

      @@ExcelEate no hay otra forma de resolver mi consulta, quizá con fórmulas empleando alguna opción?

    • @ExcelEate
      @ExcelEate  2 ปีที่แล้ว

      No, la única forma de hacerlo es a través de macros. Lo siento.