maurogsc.eu
mauro gamberini


home ==> Excel: come fare per ==> Aprire tutti i files di una cartella(Directory)

Aprire tutti i files di una cartella(Directory) - VBA

NOTA. La soluzione ed il codice sono forniti *così come sono* e l’autore declina ogni responsabilità per eventuali problemi causati dal codice o dalla soluzione proposta se usati impropriamente. Create e utilizzate una copia del file per le vostre prove, *prima* di utilizzare il codice o la soluzione in files importanti.

1 - Come aprire tutti i files di una cartella(qui C:\tuaCartella"), sommare i valori della colonna B del Foglio1 di ciascun file aperto e riportare il nome del file e la somma ottenuta nel Foglio1, colonne A e B del file che contiene il codice:

Public Sub m()
       
    'dichiaro le variabili
    Dim objFSO As Object
    Dim objFolder As Object
    Dim objFile As Object
    Dim wk As Workbook
    Dim shMe As Worksheet
    Dim sh As Worksheet
    Dim lRigaMe As Long
    Dim lRiga As Long
    Dim s As String
            
    'impedisco lo sfarfallio dello schermo
    Application.ScreenUpdating = False
        
    'metto un riferimento alla cartella in cui
    'si trovano i files
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.GetFolder("C:\TuaCartella")
    'metto un riferimento al foglio in cui incollerò
    'i risultati
    Set shMe = ThisWorkbook.Worksheets("Foglio1")
    'imposto la riga in cui iniziare a scrivere
    lRigaMe = 2
    
    'ciclo gli oggetti file della cartella
    For Each objFile In objFolder.Files
        
        'imposto a "" la variabile s
        s = ""
        'metto in s gli ultimi 4 caratteri del nome
        'del file che sto ciclando
        s = Right(objFile.Name, 4)
        
        Select Case s
            'se s è uguale ad una delle seguenti stringhe
            Case ".xls", "xlsm", "xlsx", "xlsb"
                'metto un riferimento al file che sto aprendo
                '(il file ciclato)
                Set wk = Workbooks.Open(objFile.Path)
                'metto un riferimento al suo Foglio1
                Set sh = wk.Worksheets("Foglio1")
                With sh
                    'trovo l'ultima riga con valori della colobba B
                    lRiga = .Range("B" & .Rows.Count).End(xlUp).Row
                    'scrivo in A(n) del Foglio1 di questo file il nome del file ciclato
                    shMe.Range("A" & lRigaMe).Value = .Parent.Name
                    'scrivo in B(n) di questo file il totale della somma dei valori
                    'della colonna B del Foglio1 del file ciclato
                    shMe.Range("B" & lRigaMe).Value = _
                        Evaluate("=SUM(" & .Name & "!B1:B" & lRiga & ")")
                    'aumento di 1 il valore della variabile
                    'per scrivere alla riga successiva
                    lRigaMe = lRigaMe + 1
                End With
                'Set a Nothing della variabile oggetto
                Set sh = Nothing
                'chiudo il file ciclato
                wk.Close
                'Set a Nothing della variabile oggetto
                Set wk = Nothing
        End Select
        
    Next
    
    'ripristino lo schermo
    Application.ScreenUpdating = True
            
    'Set a Nothing delle variabili oggetto
    Set shMe = Nothing
    Set objFile = Nothing
    Set objFolder = Nothing
    Set objFSO = Nothing
        
End Sub

Per ulteriori informazioni su Microsoft Excel ed il suo Visual Basic, utilizzate questo forum:
http://social.answers.microsoft.com/Forums/it-IT/officeexcelit/threads


Ultimo aggiornamento di questa pagina: 23/11/2010 - mauro gamberini