Macro para copiar datos de un archivo a otro en Excel

Hace un rato, una seguidora de esta web me preguntaba si podía ayudarle con urgencia a crear una macro para copiar datos de un archivo a otro en Excel pero con una particularidad, que se creen automáticamente al camiar una celda en Excel.  Vamos a por ello!

Organización del trabajo

Para crear una macro para copiar datos de un archivo a otro en Excel tenemos que ser muy cuidadosos y meticulosos si no queremos gastar medio día investigando todas las posiblidades. En este caso nos hemos organizado la información de la siguiente manera.

Tenemos la tabla que queremos copiar con los datos que se muestran en la siguiente imagen:

Macro para copiar datos de un archivo a otro en excel

En la tabla queremos copiar lo que está dentro del recuadro en negro oscuro y para eso necesitamos que se haga automáticamente al cambiar el valor de la celda en negro.

Esta celda contiene un desplegable como el de la siguiente imagen que hace que los valores del recuadro en gris cambien. En este ejemplo sólo son números que cambian:

desplegable en excel que hace cambiar las celdas

Este desplegable desencadena un evento (ver más sobre eventos en Excel) y este evento llama a la macro para copiar el rango recuadrado a otro libro nuevo de Excel.

Evento en Excel: ejecutar una macro cuando cambia una celda

El evento en cuestión debemos de escribirlo en la hoja de VBA en el editor de macros. Ojo, tiene que ser en la hoja en la que se encuentre la celda que al cambiar queremos que ejecute la macro para copiar datos de un archivo a otro en Excel.evento en vba excel

El evento que necesitamos es el siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Intersect(Target, Range("C5")) Is Nothing Then Exit Sub
      
    Call Copiar_en_otro_libro

End Sub

En este evento se evalúa si la celda en cuestión cambia. En caso afirmativo, se llama a la macro Copiar_en_otro_libro mediante el método Call, en caso negativo se termina la macro. Para esta evaluación usaremos el método INTERSECT en VBA que comprueba si dos rangos tienen alguna celda en común.

Macro para copiar datos

La macro que vamos a crear es una macro muy sencilla que realiza los siguientes pasos:

  • Dimensionar variables tipo libro
  • Crear las variables
  • Crear un nuevo libro de Excel
  • Copiar el valor de los datos que queremos de un libro de Excel a otro.

La macro que vamos a usar es la siguiente:

Sub Copiar_en_otro_libro()

Dim Libro_inicial, Libro_copia As Workbook
    
    Set Libro_inicial = ThisWorkbook
    
    Workbooks.Add
        Set Libro_copia = ActiveWorkbook

    Libro_copia.Sheets(1).Range("A1:L18") = _
        Libro_inicial.Sheets(1).Range("B3:M21").Value

End Sub

 Un regalo

Estas explicaciones no son siempre fáciles de entender (ni de explicar!!) por eso os dejo en el siguiente enlace un archivo que podáis descargar para ver el código y sus funcionalidades: Ejemplo de cómo cambiar una hoja al cambiar una celda

(Visited 142.469 times, 1 visits today)
Categorías VBA

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información ACEPTAR

Aviso de cookies