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 ”:

img1

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

img2

  • 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

img3

  • 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

img4

  • Copie el siguiente código en ThisWorkbook (Open.xls)

Private Sub Workbook_Open()

Run "Importdata"

End Sub

img5

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»:

img6

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.

rar icon

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]