maurogsc.eu
|
![]() |
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