Buongiorno a tutti,ù
premettendo la mia poca conoscenza del VBA, ho da poco imparato a fare dei brevi codice che, comunque, risultano di una efficacia incredibile. Desideravo chiedervi una soluzione o comunque un'indicazione per risolvere un problema:
- ho circa 50 file in excel che devo processare;
- di questi 50 file devo copiare un foglio, nome foglio "VR_Mansione" (nome uguale per tutti e 50 i file);
- i file sono elencati in un file riassuntivo (file di destinazione) e, a partire dalla colonna "b3" del foglio "elencoVR" ho inserito i collegamenti ipertestuali dei file (indirizzi completi dei 50 file che devo processare);
- devo aprire i 50 file, copiare il foglio "VR_Mansione" e chiudere i file;
- tutti i dati dei 50 fogli "VR Mansione" devono essere scritti in un unico foglio del file riassuntivo nominato "tutte".
Ho provato a fare un codice inserendo solo due dei cinquanta file: ecco il codice (che per due soli file funziona)
codice:
Sub copia() 'copia tutte le vr mansione presenti su un unico foglio
Dim Riassunto As Workbook
Dim wk1 As Workbook
Dim wk2 As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dest1 As Worksheet
Dim N1, N2, As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Set Riassunto = ThisWorkbook
N1 = Riassunto.Worksheets("elencoVR").Range("B3").Value 'l'indirizzo lo prendo dall'elenco del primo foglio colonna "b"
N2 = Riassunto.Worksheets("elencoVR").Range("B4").Value
Set wk1 = Workbooks.Open(N1)
Set wk2 = Workbooks.Open(N2)
Set dest1 = Riassunto.Worksheets("Tutte") 'è il foglio di destinazione del file riassuntivo
Set sh1 = wk1.Worksheets("VR_Mansione")
Set sh2 = wk2.Worksheets("VR_Mansione")
With sh1
.Range("f4:M150").Copy Destination:=dest1.Range("a4")
.Range("o4:z150").Copy Destination:=dest1.Range("j4")
End With
wk1.Close
With sh2
.Range("f4:M150").Copy Destination:=dest1.Range("a154")
.Range("o4:z150").Copy Destination:=dest1.Range("j154")
End With
wk2.Close
Application.ScreenUpdating = True
End Sub
Tutti funziona ma, ovviamente, non so come continuare. Teoricamente se i file fossero sempre tutti e 50 presenti ed elencati potrei aggiungere (con pazienza) tutte le istruzioni necessarie. Il problema è che i file sono di numero variabile e, quindi, spesso nella colonna "B" dell'elenco dei file non c'è quindi scritto niente. In questa situazione il codice non funziona.
Andrebbe bene anche indicarmi una metodologia per procedere e poi passerei un po' di tempo a studiarci su nonostante l'età avanzata.
Grazie.
PS: VBA è veramente utilissimo e fenomenale.