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.