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