In questo magnifico forum, che in passato mi ha risolto velocemente molti problemi, ho trovato una macro che risponde esattamente alla mia esigenza: creare un unico file xlsx da più file diversi.
La macro da voi proposta prevede:
1) l'importazione dei dati del "Foglio1" di tutti i file Excel contenuti nella stessa cartella del file Riepilogo (che contiene la macro)
2) crea una cartella ArchivioXls (se non esiste)
3) trasferisce i file processati nella cartella Archivio per evitare di processarli di nuovo
Eccola:
- Codice: Seleziona tutto
Public perc As String, Ws1 As String, f As String, WB1 As String
Sub ARCHIVIO()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
If Dir(perc & "\ArchivioXls", vbDirectory) = "" Then
MkDir (perc & "\ArchivioXls")
End If
WB1 = ThisWorkbook.Name
Ws1 = "Foglio1"
Worksheets(Ws1).Select
Range("A1").Select
ElencoFile Direct:=perc, Estens:="*.xlsx*", Inicell:=ActiveCell
Columns("A:AZ").EntireColumn.AutoFit
Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
Dim i As Integer, f As String
ChDir Direct
f = Dir(Estens)
If f = "" Then Exit Sub
While f <> ""
If f <> ThisWorkbook.Name Then
Application.Workbooks.Open perc & "\" & f
URF = Workbooks(f).Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
URR = Workbooks(WB1).Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row
Workbooks(f).ActiveSheet.Rows("1:" & URF).Copy Destination:=Workbooks(WB1).Worksheets(Ws1).Range("A" & URR + 1)
Workbooks(f).Close savechanges:=False
FileCopy perc & "\" & f, perc & "\ArchivioXls\" & f
Kill perc & "\" & f
End If
f = Dir
Wend
End Sub
Premetto che per me Visual Basic è quasi come il cinese: sono solo una brava copiona che si arrabatta a modificare qualche semplice comando in macro già fatte, come in questo caso.
Ho due problemi: se la salvo nella cartella di lavoro corrente, e in locale, funziona perfettamente, ma se provo a ricrearla su una cartella in rete (mi serve per lavoro, quindi pc di una grande azienda) mi dice che non riesce a trovare il percorso. Inoltre la vorrei salvare nella cartella Personale per poterla usare anche su altre cartelle senza doverla rifare ogni volta.
Cosa devo modificare?
Grazie mille per il tempo che mi dedicherete!