Discussione:
VBA: unire un foglio di più Workbook
(troppo vecchio per rispondere)
draleo
2020-04-01 13:44:31 UTC
Permalink
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
draleo
2020-04-01 13:47:11 UTC
Permalink
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
draleo
2020-04-01 16:34:24 UTC
Permalink
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Final Job
2020-04-01 19:52:32 UTC
Permalink
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
b***@gmail.com
2020-04-02 15:15:23 UTC
Permalink
Post by Final Job
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
Presumo che per recuperare dati Bruno abbia utilizzato venga utilizzata una connessione ADO.
L'orientamento moderno è quello di utilizzare come tool Power Query
Qui il link al file di esempio che consolida i Foglio2 di tutti i files .xlsm in C:\prova.
https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0

Dopo aver messo i file nella cartella sopra indicata basta fare click destro e scegliere dal menu Aggiorna su qualsiasi cella della tabella in Foglio1. Il file non avendo macro VBA è un .xlsx
Nessun problema con Excel 2016-2019 e Office365. Per Excel 2010-2013 bisogna prima scaricare l'Add-in Power Query

https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0
Final Job
2020-04-02 15:57:16 UTC
Permalink
Post by b***@gmail.com
Post by Final Job
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni..
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
Presumo che per recuperare dati Bruno abbia utilizzato venga utilizzata una connessione ADO.
L'orientamento moderno è quello di utilizzare come tool Power Query
Qui il link al file di esempio che consolida i Foglio2 di tutti i files .xlsm in C:\prova.
https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0
Dopo aver messo i file nella cartella sopra indicata basta fare click destro e scegliere dal menu Aggiorna su qualsiasi cella della tabella in Foglio1.. Il file non avendo macro VBA è un .xlsx
Nessun problema con Excel 2016-2019 e Office365. Per Excel 2010-2013 bisogna prima scaricare l'Add-in Power Query
https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0
grazie Elio
cercherò di capirci qualcosa
buona goiornata
Ale
b***@gmail.com
2020-04-02 16:57:46 UTC
Permalink
Post by Final Job
Post by b***@gmail.com
Post by Final Job
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni..
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
Presumo che per recuperare dati Bruno abbia utilizzato venga utilizzata una connessione ADO.
L'orientamento moderno è quello di utilizzare come tool Power Query
Qui il link al file di esempio che consolida i Foglio2 di tutti i files .xlsm in C:\prova.
https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0
Dopo aver messo i file nella cartella sopra indicata basta fare click destro e scegliere dal menu Aggiorna su qualsiasi cella della tabella in Foglio1.. Il file non avendo macro VBA è un .xlsx
Nessun problema con Excel 2016-2019 e Office365. Per Excel 2010-2013 bisogna prima scaricare l'Add-in Power Query
https://www.dropbox.com/s/klv0nf19oxq3qs1/ConsolidaWorkbookFoglio2.xlsx?dl=0
grazie Elio
cercherò di capirci qualcosa
buona goiornata
Ale
Tieni presente che la mia soluzione faceva seguito al tipo di dati molto poco strutturati di Draleo. Potrebbe essere più semplice se hai dati con numero colonne predefinito e intestazioni di colonne, elementi significativi in nome di file, diversa estensione, ecc.
Elio
draleo
2020-04-02 19:18:10 UTC
Permalink
Post by Final Job
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni.
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
Perdonate il ritardo , ma i tempi sono quelli che sono. Questa è la soluzione di Bruno.I Fogli da riepilogare soni i Foglio2 di ciascun file
draleo
----------------------------------------------------------------
Public Sub Riepilogo()'By Bruno Campanini
Dim FSO As New FileSystemObject, MyFolder As Folder, i As File
Dim FromWorkbook As Excel.Workbook, j As Range, k As Long
Dim SourceStartCell As String, NumCol As Long, n As Long
Dim TargetRange As Range, SourceRange As Range
'--- Definizioni ---------------------------------------------------
SourceStartCell = "A1"
NumCol = 23
Set MyFolder = FSO.GetFolder("C:\Users\Leonardo\Desktop\Album Esteri\USA\")
Set TargetRange = [Foglio1!A1]
'----------------------------------------------------------------------
Range(TargetRange.End(xlDown), TargetRange(, NumCol)).ClearContents
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each i In MyFolder.Files
k = 0
Set FromWorkbook = Application.Workbooks.Open(i)
Set SourceRange = FromWorkbook.Worksheets("Foglio2").Range(SourceStartCell)

If IsEmpty(SourceRange) Then
GoTo Continua
Else
Set SourceRange = Range(SourceRange, SourceRange.End(xlDown))
If Not IsEmpty(TargetRange) Then
If IsEmpty(TargetRange(2)) Then
Set TargetRange = TargetRange(2)
Else
Set TargetRange = TargetRange.End(xlDown)(2)
End If
End If
For Each j In SourceRange
k = k + 1
For n = 1 To NumCol
TargetRange(k, n) = SourceRange(k, n)
Next
Next
End If
Continua:
FromWorkbook.Close
Set FromWorkbook = Nothing
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True

End Sub
Final Job
2020-04-02 19:54:39 UTC
Permalink
Post by draleo
Post by Final Job
Post by draleo
Post by draleo
Post by draleo
In una cartella C:/prova ho diversi file xlsm. In tutti questi c'è il Foglio2 (sempre con la stessa struttura), con i dati che vanno dalla colonna A alla col W.
Possono esserci anche colonne o righe vuote. Non ci sono intestazioni..
Vorrei unirli tutti (accodarli) in un unico foglio di un nuovo workbook (per es "Tutti"), partendo da A1 in giù. Avevo anche trovato su questo Forum una procedura di oltre 10 anni fa- non mi ricordo l'autore-, ma non mi funziona più.
Qualche procedura per l'occorrenza ?
grazie anticipatamente
draleo
PS: se si potesse fare senza aprirli, sarebbe meglio (in quanto la loro apertura è lenta). Altrimenti...va bene ugualmente
ho risolto. ho trovato una vecchia procedura di Bruno Campanini ,che, aggiungendo i riferimenti giusti, ora funziona bene
draleo
Ciao
Puoi postare i riferimenti di questa soluzione?
Grazie
Ale
Perdonate il ritardo , ma i tempi sono quelli che sono. Questa è la soluzione di Bruno.I Fogli da riepilogare soni i Foglio2 di ciascun file
draleo
----------------------------------------------------------------
Public Sub Riepilogo()'By Bruno Campanini
Dim FSO As New FileSystemObject, MyFolder As Folder, i As File
Dim FromWorkbook As Excel.Workbook, j As Range, k As Long
Dim SourceStartCell As String, NumCol As Long, n As Long
Dim TargetRange As Range, SourceRange As Range
'--- Definizioni ---------------------------------------------------
SourceStartCell = "A1"
NumCol = 23
Set MyFolder = FSO.GetFolder("C:\Users\Leonardo\Desktop\Album Esteri\USA\")
Set TargetRange = [Foglio1!A1]
'----------------------------------------------------------------------
Range(TargetRange.End(xlDown), TargetRange(, NumCol)).ClearContents
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each i In MyFolder.Files
k = 0
Set FromWorkbook = Application.Workbooks.Open(i)
Set SourceRange = FromWorkbook.Worksheets("Foglio2").Range(SourceStartCell)
If IsEmpty(SourceRange) Then
GoTo Continua
Else
Set SourceRange = Range(SourceRange, SourceRange.End(xlDown))
If Not IsEmpty(TargetRange) Then
If IsEmpty(TargetRange(2)) Then
Set TargetRange = TargetRange(2)
Else
Set TargetRange = TargetRange.End(xlDown)(2)
End If
End If
For Each j In SourceRange
k = k + 1
For n = 1 To NumCol
TargetRange(k, n) = SourceRange(k, n)
Next
Next
End If
FromWorkbook.Close
Set FromWorkbook = Nothing
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Tranquilli ... grazie ad entrambi per le utili informazioni
Ale

Loading...