Visualizzazione dei risultati da 1 a 7 su 7

Visualizzazione discussione

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2014
    Messaggi
    3

    [VBA] Copiare 50 file Excel in un unico file

    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.
    Ultima modifica di LeleFT; 15-12-2014 a 10:32 Motivo: Aggiunti i tag CODE

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.