Extraer datos de un libro cerrado
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 es usar el 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 cerrado, es decir, «Closed.xls» dentro del libro 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, #N / A se pone en su lugar. Usando el método de celdas especiales, puede eliminar todos los errores # N / A y cambiar la fórmula a valores. Para comenzar, guardaremos dos archivos de Excel 1) Open.xls 2) Closed.xls en la ruta “D: \ Test Carpeta ”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 de 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) 'Put in the UsedRange Address of Sheet1 Closed.xls (this workbook)' --- Comment 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 As String Sheet1.UsedRange.Clear Sheet1.Cells(1, 1) = "= 'D:\Test Folder\" & "[Closed.xls]Sheet2'!RC" AreaAddress = Sheet1.Cells(1, 1) With Sheet1.Range(AreaAddress) .FormulaR1C1 = "=IF('D:\Test Folder\" & "[Closed.xls]Sheet1'!RC="""",NA(),'D:\Test Folder\" & _ "[Closed.xls]Sheet1'!RC)" On Error Resume Next .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() Run "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 a [email protected]