Excel VBA para copiar datos de otro libro sin abrir

  • Compartir Este
Hugh West

En Microsoft Excel , Macros VBA puede resolver fácilmente una amplia gama de problemas. Si queremos copiar datos de otro libro de trabajo sin abrir el libro, podemos hacerlo fácilmente utilizando Excel VBA En este artículo aprenderá Excel VBA para copiar datos de otro libro de trabajo sin abrirlo.

Descargar el cuaderno de prácticas

Puedes descargarte el cuaderno de ejercicios y practicar con ellos.

Copiar Datos de Otro Libro.xlsm

3 Formas Diferentes de Copiar Datos de Otro Libro sin Abrir con Excel VBA

A veces, necesitamos datos de algún libro de trabajo anterior. Si tenemos prisa y necesitamos los datos inmediatamente sin abrir el libro de trabajo, podemos utilizar la función Excel VBA Con Excel VBA, podemos copiar rápidamente los datos de otros libros, para ello, sólo necesitamos saber la ubicación de ese libro en particular.

Para copiar los datos vamos a utilizar el nombre del libro de trabajo Detalles_del_producto Y queremos copiar el rango de datos ( B4:E10 El conjunto de datos que queremos copiar contiene algunos productos, su precio de venta, el coste de las mercancías y los márgenes de beneficio bruto. Veamos diferentes criterios para copiar datos de otro libro de trabajo.

1. Copiar los Datos de una Hoja desde Otro Libro sin Abrir con Excel VBA

Podemos copiar datos de una hoja siguiendo el método VBA Para ello, debemos seguir los pasos que se indican a continuación.

PASOS:

  • En primer lugar, vaya a la página Desarrollador de la cinta de opciones.
  • A continuación, haga clic en Visual Basic para abrir el Editor de Visual Basic .
  • Otra forma de abrir el Editor de Visual Basic es simplemente pulsar Alt + F11 .

  • O bien, haga clic con el botón derecho del ratón en la hoja y seleccione Ver Código .

  • Ahora, escriba el Código VBA abajo.

Código VBA:

 Sub Copy_Data_from_Another_Workbook() Dim wb As Workbook Dim newwb As Workbook Dim rn1 As Range Dim rn2 As Range Set wb = Application.ActiveWorkbook With Application.FileDialog(msoFileDialogOpen) .Filters.Clear .Filters.Add "Excel 2007-13", "*.xlsx; *.xlsm; *.xlsa" .AllowMultiSelect = False .Show If .SelectedItems.Count> 0 Then Application.Workbooks.Open.SelectedItems(1) Set newwb = Application.ActiveWorkbook Set rn1 = Application.InputBox(prompt:="Select Data Range", Default:="A1", Type:=8) wb.Activate Set rn2 = Application.InputBox(prompt:="Select Destination Range", Default:="A1", Type:=8) rn1.Copy rn2 rn2.CurrentRegion.EntireColumn.AutoFit newwb.Close False End If End With End SubEnd With End Sub 
  • Por último, ejecute el código pulsando el botón Ejecutar Sub por otro lado, pulse el atajo de teclado F5 para ejecutar el código.

NOTA: No es necesario modificar el código, basta con copiarlo y pegarlo.

  • Al ejecutar el código Abrir archivo de su ordenador.
  • A continuación, haga clic en el libro de trabajo en el que desea recoger los datos.
  • A continuación, haga clic en el botón OK botón.

  • Ahora, seleccione los datos del archivo de origen arrastrando sobre el rango B5:E10 y haga clic en OK .

  • Una vez seleccionado el intervalo de datos, seleccione el intervalo de destino en el que desea colocar los datos.
  • Y, haga clic en OK .

  • Al final, esto cerrará el archivo de origen y los datos se copiarán en el archivo de destino.

Más información: Excel VBA: Copiar Rango a Otro Libro

Lecturas similares

  • Cómo pegar desde el portapapeles a Excel usando VBA
  • Desactivar Copiar y Pegar en Excel sin Macros (Con 2 Criterios)
  • Cómo Copiar Excluir Filas Ocultas en Excel (4 Métodos Fáciles)
  • Excel VBA para copiar filas a otra hoja de cálculo basado en criterios
  • Cómo usar VBA para pegar valores sólo sin formato en Excel

2. VBA para copiar un rango de datos de otro libro sin abrir en Excel

Utilizando el VBA podemos copiar datos de un rango de datos. Para ello, debemos seguir los pasos que se indican a continuación.

PASOS:

  • Para empezar, vaya a la página Desarrollador de la cinta de opciones.
  • En segundo lugar, abra el Editor de Visual Basic haciendo clic en Visual Basic o pulsando Alt + F11 .
  • También puede hacer clic con el botón derecho del ratón en la hoja y seleccionar Ver Código para abrir el Editor de Visual Basic .

  • A continuación, anote Código VBA allí.

Código VBA:

 Sub CollectData() Dim rgTarget As Range Set rgTarget = ActiveSheet.Range("B2:E10") 'donde poner los datos copiados. rgTarget.FormulaArray = "='D:\[Product_Details.xlsx]Sheet1'!$B$4:$E$10" rgTarget.Formula = rgTarget.Value End Sub 
  • Aquí, ejecute el código utilizando Ejecutar Sub o pulse el atajo de teclado F5 para ejecutar el código.

NOTA: No es necesario modificar el código, basta con cambiar el rango según los datos de origen.

  • Por último, los datos se copian de otro libro al libro activo.

Más información: Macro para copiar y pegar de una hoja de cálculo a otra (15 métodos)

3. Excel VBA para copiar datos de otro libro sin abrir mediante el botón de comando

Podemos copiar datos de otro libro utilizando el botón de comando de la ventana VBA Para ello, debemos seguir los pasos que se indican a continuación.

PASOS:

  • En primer lugar, para poner un Botón de mando vaya a la página Desarrollador ficha.
  • En segundo lugar, haga clic en el botón Inserte menú desplegable.
  • En tercer lugar, haga clic en el botón Botón de mando .

  • Ponemos el Producto en célula A1 ya que es el nombre de la hoja de nuestro archivo fuente. Y establecemos la opción Botón de mando Hemos creado la tabla, sólo necesitamos los datos que están en otro libro.

  • Del mismo modo, navegue hasta la página Desarrollador de la cinta de opciones.
  • A continuación, haga clic en Visual Basic o pulse Alt + F11 para lanzar el Editor de Visual Basic .
  • También puede abrir el Editor de Visual Basic haciendo clic con el botón derecho del ratón en la hoja y seleccionando Ver Código .

  • Ahora, escriba el VBA código abajo.

Código VBA:

 Private Sub CommandButton1_Click() Dim sourceworkbook As Workbook Dim currentworkbook As Workbook Set currentworkbook = ThisWorkbook Set sourceworkbook = Workbooks.Open("D:\Products_Details.xlsx") sourceworkbook.Worksheets("Product").Range("B5:E10").Copy currentworkbook.Activate currentworkbook.Worksheets("Sheet3").Activate currentworkbook.Worksheets("Sheet3").Cells(4, 1).Select ActiveSheet.Pastesourceworkbook.Close Set sourceworkbook = Nothing Set currentworkbook = Nothing ThisWorkbook.Activate Worksheets("Sheet3").Activate Worksheets("Sheet3").Range("A2").Select End Sub 
  • A continuación, guarde el código pulsando Ctrl + S .

NOTA: Puedes copiar el código, sólo tienes que cambiar la ruta del archivo y el rango de datos.

  • Y, por último, si hace clic en el botón BotónMando1 esto copiará los datos de otro libro de trabajo sin abrirlo.

Más información: Macro para copiar datos de un libro a otro en función de criterios

Conclusión

Los criterios anteriores son pautas para copiar datos de otro libro de trabajo sin abrirlo con Excel VBA Si tiene alguna pregunta, sugerencia o comentario, no dude en hacérnoslo saber en la sección de comentarios. También puede echar un vistazo a otros artículos de la sección ExcelWIKI.com ¡blog!

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.