Extracción de datos numéricos de una serie de libros cerrados con nombres consecutivos hacia otro abierto

Micasa

New Member
Joined
Nov 13, 2015
Messages
3
MrExcel:

He usado la sintaxis Workbook... para formar una columna de datos en el libro en que tengo la macro, usando los numeros que se encuentran en una celda fija de varios libros con nombres consecutivos.

PAra hacerlo, he tenido que abrir a la vez los 32 libros de origen.

Cómo puedo hacer para que esto ocurra sin necesidad de tener todos los libros abiertos sumiltaneamente? O sea, para que la macro incluya una etapa en que ella sola abra cada libro, le extraiga el numero que quiero y lo cierre, dejando el numero extraido grabado en mi libro?

Gracias de antemano,
 

Excel Facts

Lock one reference in a formula
Need 1 part of a formula to always point to the same range? use $ signs: $V$2:$Z$99 will always point to V2:Z99, even after copying
La macro que corre en el libro 1 debe abrir el libro i (tal que i va de 1 a n) copiar el valor de una celda y lo vuelve a cerrar
Y continua con i+1
Code:
Sub AbreCopiaCierraPega()
    Dim listaArchivos(100) As String
    Dim tempbook As Workbook
    Dim valor As String
    Dim desde As String
    Dim hasta As String
    ' Desde es el lugar donde esta el valor que se quiere copiar
    desde = "G120"
    ' Columna donde se van poniendo los valores
    hasta = "B"
    ' Llenar la lista de archivos
    listaArchivos(1) = "C:\Temp\suarchivo01.xls"
    listaArchivos(2) = "C:\Temp\suarchivo02.xls"
    ...
    ' Y así con todos los archivoslista
    For i = 1 To 100 ' Cambiar el 100 por el valor corecto
        Set tempbook = Workbooks.Open(listaArchivos(i))
        valor = Range(desde).Value
        tempbook.Close savechanges:=False
        Range(hasta & Format(i + 1, "0")).Formula = valor
     Next i
End Sub
O se podría hacer que recorra un directorio y abra todos los archivos de ese directorio
Code:
Sub LoopFolders() 'reference Microsoft Scripting Runtime under Tools > ReferencesDim fso As New FileSystemObject
Dim mFile As File
Dim mFolder As Folder
Dim folderPath as String
dim tempbook as Workbook

folderPath = "" 'Your folder goes here
 
Set fso = CreateObject("Scripting.FileSystemObject")
Set mFolder = fso.GetFolder(folderPath)
 
For Each mFile In mFolder.Files
    Set tempbook = Workbooks.Open(mFile.Path)
     'Your Code goes here
    tempbook.Close savechanges:=False
Next mFile
End Sub

El codigo de copia es el mismo en ambos ejemplos
Sergio
 
Upvote 0
Sr. Sergio Mabres, mil gracias por tomar el tiempo para hacerme una respuesta. Voy a estudiar lo que me propone.
Otra vez muchísimas gracias,
Ivette
 
Upvote 0

Forum statistics

Threads
1,223,164
Messages
6,170,444
Members
452,326
Latest member
johnshaji

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top