Principales respuestas
Abrir varios archivos de una lista determinada

Pregunta
-
Que tal aqui necesitando de su ayuda, quiero realizar una macro que te habra ciertos archivos de una lista determinada, y para ejecutar un procedimiento, actualmente abro cada archivo y en el codigo de la macro le cambio el nombre de archivo de referencia.
Muchas gracias por tu apoyo.
Respuestas
-
El siguiente ejemplo de codigo te permite seleccionar todos los archivos que quieras a la vez y hacer tus manipulaciones. Algunas de las variables han sido definidas con fines ilustrativos ya que para este codigo concreto no son estrictamente necesarias (p.ej. ws o rng). Tambien, he incluido la comprobacion de si el archivo a usar ya esta abierto.
Code SnippetSub test1()
Dim arrLista As Variant
Dim i As Long
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
arrLista = Application.GetOpenFilename( _
FileFilter:="Hoja Excel, *.xls*", _
Title:="Abrir Archivos", _
MultiSelect:=True)
If Not IsArray(arrLista) Then Exit Sub
For i = LBound(arrLista) To UBound(arrLista)
On Error Resume Next
Set wb = Workbooks(Dir(arrLista(i)))
On Error GoTo 0
If wb Is Nothing Then Set wb = Workbooks.Open(arrLista(i))
Set ws = wb.Worksheets(1)
With ws
Set rng = .Range(.[A2], .Cells(.Rows.Count, "A").End(xlUp))
End With
rng.Copy ThisWorkbook.Worksheets(1).Range("A2")
Set rng = Nothing
Set ws = Nothing
wb.Close SaveChanges:=False
Set wb = Nothing
Next i
End Submas ejemplos aqui:
http://www.rondebruin.nl/tips.htm (seccion Copy/Paste/Merge Examples)
- Marcado como respuesta Ismael Borche martes, 5 de abril de 2011 21:26
Todas las respuestas
-
-
¿has probado el método GetOpenFilename?
hace que aparezca el cuadro de diálogo "Abrir Archivo" para seleccionar el archivo (o los archivos) que quieras.
el resultado de este método es una cadena de texto con la ruta hasta el archivo seleccionado.
por ejemplo
Code SnippetstArchivoElegido = Application.GetOpenFilename("Hoja Excel , *.xls*", _
, "Seleccione el archivo para copiar sus datos." )Espero que este consejo te sea útil. Aunque no es exactamente lo que preguntas creo que es más versátil que poner la ruta al archivo como una cadena de texto manualmente.
Si necesariamente has de leer los archivos de una lista, realiza un bucle que:
lea el nombre del archivo,
lo abra,
realice las operaciones que necesitas,
cierre el archivo
y pase al siguiente elemento de la lista.
-
El siguiente ejemplo de codigo te permite seleccionar todos los archivos que quieras a la vez y hacer tus manipulaciones. Algunas de las variables han sido definidas con fines ilustrativos ya que para este codigo concreto no son estrictamente necesarias (p.ej. ws o rng). Tambien, he incluido la comprobacion de si el archivo a usar ya esta abierto.
Code SnippetSub test1()
Dim arrLista As Variant
Dim i As Long
Dim wb As Workbook
Dim ws As Worksheet
Dim rng As Range
arrLista = Application.GetOpenFilename( _
FileFilter:="Hoja Excel, *.xls*", _
Title:="Abrir Archivos", _
MultiSelect:=True)
If Not IsArray(arrLista) Then Exit Sub
For i = LBound(arrLista) To UBound(arrLista)
On Error Resume Next
Set wb = Workbooks(Dir(arrLista(i)))
On Error GoTo 0
If wb Is Nothing Then Set wb = Workbooks.Open(arrLista(i))
Set ws = wb.Worksheets(1)
With ws
Set rng = .Range(.[A2], .Cells(.Rows.Count, "A").End(xlUp))
End With
rng.Copy ThisWorkbook.Worksheets(1).Range("A2")
Set rng = Nothing
Set ws = Nothing
wb.Close SaveChanges:=False
Set wb = Nothing
Next i
End Submas ejemplos aqui:
http://www.rondebruin.nl/tips.htm (seccion Copy/Paste/Merge Examples)
- Marcado como respuesta Ismael Borche martes, 5 de abril de 2011 21:26
-