none
Abrir varios archivos de una lista determinada RRS feed

  • 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.

    jueves, 26 de julio de 2007 1:13

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 Snippet
    Sub 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 Sub

     

     

    mas 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
    lunes, 6 de agosto de 2007 9:10

Todas las respuestas

  •  

    1- donde esta esa lista?
    2- Que contiene la lista?? nombres y rutas y extensiones?? solo parte de esos datos??? archivos de un soo tipo??? de que tipo???
    3- Un procedimeinto??? que hace??? lo mismo en cada archivo???


    Abraham

    jueves, 26 de julio de 2007 20:59
  • ¿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 Snippet

    stArchivoElegido = 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.

    domingo, 5 de agosto de 2007 22:13
  • 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 Snippet
    Sub 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 Sub

     

     

    mas 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
    lunes, 6 de agosto de 2007 9:10
  •  

    El método

     

    arrLista = Application.GetOpenFilename( _
            FileFilter:="Hoja Excel, *.xls*", _
            Title:="Abrir Archivos", _
            MultiSelect:=True)

    no me genera un array, solo direcciona un único archivo, aunque seleccione varios archivos.

     

    ¿que puedo hacer?

    jueves, 3 de abril de 2008 1:48