Extraer datos de un libro cerrado

Anonim

Extraer datos de un archivo cerrado en otro libro de trabajo es una solicitud común de la mayoría de los usuarios de Excel. Les gustaría extraer o consolidar datos de archivos cerrados; sin embargo, esto no es posible. Existe una solución alternativa que ayuda a resolver este problema. La solución está usando código macro.

Pregunta: Diariamente, dedico tiempo a copiar datos de un archivo a otro. Hay dos archivos "Open.xls" y "Closed.xls" y quiero copiar datos de "Closed.xls" a "Open.xls" a través del código VBA.

Cosas clave que debe saber:

  • Lo primero es que debemos conocer el "rango usado" del libro de trabajo cerrado, es decir, "Closed.xls" dentro del libro de trabajo abierto, por ejemplo. "Open.xls"
  • Podemos usar la función SI en el rango usado del libro de trabajo "Closed.xls" dentro del libro de trabajo "Open.xls" y extraerá los datos del libro de trabajo "Closed.xls"
  • Si la celda de referencia está en blanco, se coloca # N / A. Usando el método de celdas especiales, puede eliminar todos los errores # N / A y cambiar la fórmula a valores

Para empezar, guardaremos dos archivos de Excel 1) Open.xls 2) Closed.xls en la ruta "D: \ Carpeta de prueba"

A continuación se muestra la instantánea del libro de trabajo "Closed.xls":

Para guardar automáticamente los datos del archivo "Closed.xls" en el archivo "Open.xls", debemos seguir los pasos a continuación para iniciar el editor VB

  • Haga clic en la pestaña Desarrollador
  • Desde el grupo Código, seleccione Visual Basic

  • Copie el siguiente código en ThisWorkbook (Closed.xls)
 Private Sub Workbook_BeforeSave (ByVal SaveAsUI As Boolean, _ Cancel As Boolean) 'Poner la dirección UsedRange de Sheet1 Closed.xls (este libro de trabajo)' --- Comentar Sheet2.Cells (1, 1) = Sheet1.UsedRange.Address End Sub 

  • Para extraer los datos en "Open.xls", copie el siguiente código en el módulo estándar
 Sub Importdata () Dim AreaAddress como cadena Sheet1.UsedRange.Clear Sheet1.Cells (1, 1) = "= 'D: \ Carpeta de prueba \" & "[Closed.xls] Sheet2'! RC" AreaAddress = Sheet1.Cells ( 1, 1) Con Sheet1.Range (AreaAddress) .FormulaR1C1 = "= IF ('D: \ Test Folder \" & "[Closed.xls] Sheet1'! RC =" "" ", NA (), 'D: \ Carpeta de prueba \ "& _" [Closed.xls] Sheet1 '! RC) "En caso de error Continuar después .SpecialCells (xlCellTypeFormulas, xlErrors) .Clear On Error GoTo 0 .Value = .Value End With End Sub 

  • Copie el siguiente código en ThisWorkbook (Open.xls)
 Private Sub Workbook_Open () Ejecutar "Importdata" End Sub 

Ahora los códigos de VBA están todos configurados; todo lo que tenemos que hacer es abrir el nombre de archivo "Open.xls". A continuación se muestra la instantánea del archivo "Open.xls":

El código no se limita a la copia de celda de A1.usedrange; el código elegirá el rango de inicio y funcionará perfectamente bien. Los archivos están disponibles para descargar y le recomendamos que los pruebe.

Conclusión: Con el código VBA, podemos automatizar la tarea de extracción de datos sin abrir el libro de destino y nos ahorramos tener que copiar y pegar manualmente.

Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.

Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos al sitio de correo electrónico