Estrazione file excel senza aprirli



  • Estrazione file excel senza aprirli.
    di carlopepe data: 10/02/2016 14:55:26

    Buona giornata a tutti.
    Sono nuovo e volevo porvi questo problema.
    In una cartella sono salvati numerosi file nominati ognuno in modo diverso come anche il rispettivo foglio contenente i dati. Dei fogli l'unica costante è il numero di colonne, mentre quella variabile sono le righe.
    C'è la possibilità di estrarre il contenuto di tutti questi file, senza aprirli, in un nuovo file e unico foglio?
    Chiedo scusa se sono stato poco chiaro o sbagliato qualche regola.
    Grazie in anticipo e rinnovo i saluti.

    Forse sono stato poco chiaro. Allego file. Dunque i file nominati CARICAMENTO......XLS sono salvati in una cartella, quello che vorrei ottenere è il file RISULTATO. Grazie ancora.



  • di carlopepe data: 10/02/2016 16:03:18

    Forse sono stato poco chiaro. Allego file. Dunque i file nominati CARICAMENTO......XLS sono salvati in una cartella, quello che vorrei ottenere è il file RISULTATO. Grazie ancora.



  • di patel data: 10/02/2016 17:00:05

    prova questa macro
     
    Sub OpenMultipleFilesCopy() ' incolla nello stesso foglio i file selezionati uno sotto l'altro
    Dim currentWS As Worksheet, fn, f As Long, col As Long
    Set currentWS = ActiveWorkbook.ActiveSheet
    fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Select One Or More Files To Open", , True)
    If TypeName(fn) = "Boolean" Then Exit Sub
    Application.ScreenUpdating = False
    For f = 1 To UBound(fn)
        LR = currentWS.Range("A" & Rows.Count).End(xlUp).Row + 1
        With Workbooks.Open(fn(f))
            .ActiveSheet.UsedRange.Copy currentWS.Cells(LR, 1)
            .Close 0
        End With
    Next f
    Application.ScreenUpdating = True
    End Sub






  • di carlopepe data: 11/02/2016 10:03:10

    Grandioso è quello che mi serve. Funziona alla perfezione in quanto posso decidere i file da importare nel riepilogo. Va benissimo così, ma vsito che mi trovo, è possibile far scrivere in un ulteriore colonna e per ogni riga dati, il nome del file di appartenenza? Ringrazio per l'aiuto.



  • di patel data: 11/02/2016 13:16:37

    il nome nella prima colonna
     
    Sub OpenMultipleFilesCopy() ' incolla nello stesso foglio i file selezionati uno sotto l'altro
    Dim currentWS As Worksheet, fn, f As Long, col As Long
    Set currentWS = ActiveWorkbook.ActiveSheet
    fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Select One Or More Files To Open", , True)
    If TypeName(fn) = "Boolean" Then Exit Sub
    Application.ScreenUpdating = False
    For f = 1 To UBound(fn)
        LR = currentWS.Range("A" & Rows.Count).End(xlUp).Row + 1
        With Workbooks.Open(fn(f))
             currentWS.Cells(LR, 1) = fn(f) ' scrive il nome
            .ActiveSheet.UsedRange.Copy currentWS.Cells(LR, 2)
            .Close 0
        End With
    Next f
    Application.ScreenUpdating = True
    End Sub






  • di carlopepe data: 11/02/2016 16:15:50

    Ciao. Purtroppo non funziona. Spiego, se apro un singolo file è tutto ok , mentre più file mi da il percorso dei due, però estrae solo il primo omettendo una riga. Quello che chiedo, sempre nel limite del possibile,
    1 estrae percorso del primo file ed il suo contenuto.
    2 a seguire percorso del secondo e suo contenuto
    3 e così via.





  • di carlopepe data: 11/02/2016 16:19:53

    Per essere più chiaro. Nel primo sviluppo che funziona alla perfezione, aggiungere all'intestazione di ogni file aperto il percorso dello stesso.



  • di patel data: 11/02/2016 17:58:05

    prova così
     
    Sub OpenMultipleFilesCopy() ' incolla nello stesso foglio i file selezionati uno sotto l'altro
    Dim currentWS As Worksheet, fn, f As Long, col As Long
    Set currentWS = ActiveWorkbook.ActiveSheet
    fn = Application.GetOpenFilename("Excel-files,*.xls", 1, "Select One Or More Files To Open", , True)
    If TypeName(fn) = "Boolean" Then Exit Sub
    Application.ScreenUpdating = False
    For f = 1 To UBound(fn)
        LR = currentWS.Range("A" & Rows.Count).End(xlUp).Row + 1
        With Workbooks.Open(fn(f))
             currentWS.Cells(LR, 1) = fn(f) ' scrive il nome
            .ActiveSheet.UsedRange.Copy currentWS.Cells(LR+1, 1)
            .Close 0
        End With
    Next f
    Application.ScreenUpdating = True
    End Sub






  • di carlopepe data: 12/02/2016 09:59:58

    Grande grande grande. Perfettissimo, ciò che mi serviva. Grazzieee