Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[Excel per Mac] Macro per accorpare file excel

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 19/02/17 10:29

Salve a tutti,

Apro questo topic per chiedere se esiste qualche macro che permette di unire diversi file excel in uno solo. Vi spiego il problema: ho circa 53 file excel, formattati tutti in egual modo, con stesso numero di righe; la mia necessità è quella di unirli (verticalmente) in un unico file e vorrei utilizzare una macro per evitare di dover fare ogni volta copia-incolla.

Grazie per l'aiuto!

p.s. sto lavorando su Excel per mac e i file da unire sono in formato .xlsm
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Sponsor
 

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 19/02/17 12:12

Comunque, guardando nei vari topic, ho provato ad utilizzare una macro che ho trovato:

Codice: Seleziona tutto
 Public perc As String, Ws1 As String, f As String, WB1 As String
Sub ElencoFileXls()
Application.ScreenUpdating = False
Application.Calculation = xlManual
perc = ThisWorkbook.Path
If Dir(perc & "\ArchivioXls", vbDirectory) = "" Then
MkDir (perc & "\ArchivioXls")
End If
WB1 = ThisWorkbook.Name
Ws1 = "Foglio1"
Worksheets(Ws1).Select
Range("A1").Select
ElencoFile Direct:=perc, Estens:="*.xls*", Inicell:=ActiveCell
Columns("A:AZ").EntireColumn.AutoFit
Range("A1").Select
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Sub ElencoFile(Direct As String, Estens As String, Inicell As Range)
Dim i As Integer, f As String
ChDir Direct
f = Dir(Estens)
If f = "" Then Exit Sub
While f <> ""
If f <> ThisWorkbook.Name Then
Application.Workbooks.Open perc & "\" & f
URF = Workbooks(f).Worksheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
URR = Workbooks(WB1).Worksheets(Ws1).Range("A" & Rows.Count).End(xlUp).Row
Workbooks(f).ActiveSheet.Rows("1:" & URF).Copy Destination:=Workbooks(WB1).Worksheets(Ws1).Range("A" & URR + 1)
Workbooks(f).Close savechanges:=False
FileCopy perc & "\" & f, perc & "\ArchivioXls\" & f
Kill perc & "\" & f
End If
f = Dir
Wend
End Sub


Quando la eseguo però mi da Errore Runtime 53: File non trovato, evidenziando la riga If Dir(perc & "\ArchivioXls", vbDirectory) = "" Then.
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 00:19

Ciao Emilio, benvenuto nel forum.
Questa macro dovrebbe fare al caso tuo:
Codice: Seleziona tutto
Sub Accorpa()
Dim myFile As String, destSh As Worksheet, myNext As Long
Dim myPath, lastR As Long, lastC As Long, copySh As String
'
Set destSh = ThisWorkbook.Sheets("Foglio1")         '<<< Il foglio in cui riepilogare
copySh = "Foglio1"                                  '<<< Il foglio da copiare da ogni file
'
myPath = ThisWorkbook.Path & Application.PathSeparator
destSh.Select
Application.EnableEvents = False
Application.DisplayAlerts = False
myFile = Dir(myPath & "*.xls")
'Process files:
Do
DoEvents
    If myFile = "" Then Exit Do
    If myFile = ThisWorkbook.Name Then GoTo skiF
    myNext = Evaluate("=max((A1:I1000 <> """")*(row(A1:A1000)))") + 1   '***
    Workbooks.Open (myPath & myFile)
        Sheets(copySh).Select
        lastR = Evaluate("=max((A1:I1000 <> """")*(row(A1:A1000)))")    '***
        lastC = Evaluate("=max((A1:I1000 <> """")*(column(A1:I1)))")    '***
        destSh.Cells(myNext, 1).Resize(lastR, lastC) = Range("A1").Resize(lastR, lastC).Value       '***
    ActiveWorkbook.Close False
skiF:
    myFile = Dir
Loop
Application.EnableEvents = True
Application.DisplayAlerts = True
MsgBox ("Completato...")
End Sub

Parti da un file nuovo e inseriscila in un Modulo standard del vba (es Modulo1); personalizza le righe marcate <<< come da commento. Salva il file nello stesso percorso in cui si trovano i file da riepilogare.
Poi manda in esecuzione la Sub Accorpa

In assenza di informazioni sull'intervallo da copiare ho immaginato che si tratti di meno di 1000 righe e meno di 26 colonne, e che i dati partano da A1. Se cosi' non fosse allora dovrai personalizzare le righe marcate ***

Fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 10:02

Ho fatto partire la macro, purtroppo mi da sempre lo stesso errore: Errore di runtime "53" ed evidenzia la riga myFile = Dir(myPath & "*.xls").
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 10:26

Eh, su Mac i caratteri jolly (es *) non sono supportati...
Quindi, come suggerisce l'help on line del vba, sostituisci la riga myFile = Dir(myPath & "*.xls") con
Codice: Seleziona tutto
myFile = Dir(myPath,  MacID("xls"))      'NON SO se basta xls o devi usare xlsx oppure xlsm

Prova e fai sapere...
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 10:39

Allora, adesso non da errore. Però non unisce i file, il file con la macro resta vuoto
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 10:48

Allega il file che hai preparato insieme a un paio di file da integrare.

Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 11:02

Ti ho inviato in pm qualche file da unire e il file excel con la macro che si chiama Database.
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 18:12

Io non sono in grado di collaudare il tutto su Mac; adattando il comando Dir all'ambiente Pc il comportamento e' come da attese.
Ho comunque visto che si tratta di importare circa 500 righe da ogni file, quindi bisogna estendere il calcolo della prima riga libera nel file di riepilogo.

Tra i tentativi alla cieca che possiamo fere per debuggare il problema che segnali, sostituisci la macro precedente con quest'altra:
Codice: Seleziona tutto
Sub Accorpa2()
Dim myFile As String, destSh As Worksheet, myNext As Long, myFC As Long
Dim myPath, lastR As Long, lastC As Long, copySh As String
'
Set destSh = ThisWorkbook.Sheets("Foglio1")         '<<< Il foglio in cui riepilogare
copySh = "Foglio1"                                  '<<< Il foglio da copiare da ogni file
'
myPath = ThisWorkbook.Path '& Application.PathSeparator
destSh.Select
Application.EnableEvents = False
Application.DisplayAlerts = False
myFile = Dir(myPath, MacID("xlsm"))
'myFile = Dir(myPath & "\*.xls")
myPath = ThisWorkbook.Path & Application.PathSeparator
'Process files:
Do
DoEvents
    If myFile = "" Then Exit Do
    If myFile = ThisWorkbook.Name Then GoTo skiF
    myNext = Evaluate("=max((A1:I50000 <> """")*(row(A1:A50000)))") + 1   '***
    myFC = myFC + 1
    Debug.Print myPath & myFile
    Workbooks.Open (myPath & myFile)
        Sheets(copySh).Select
        lastR = Evaluate("=max((A1:I1000 <> """")*(row(A1:A1000)))")    '***
        lastC = Evaluate("=max((A1:I1000 <> """")*(column(A1:I1)))")    '***
        destSh.Cells(myNext, 1).Resize(lastR, lastC) = Range("A1").Resize(lastR, lastC).Value       '***
    ActiveWorkbook.Close False
skiF:
    myFile = Dir
Loop
Application.EnableEvents = True
Application.DisplayAlerts = True
MsgBox ("Completato: " & myFC & " files")
End Sub
Contiene gia' la prima modifica di cui ti ho detto.
A fine macro il messaggio di "completato" dira' anche quanti file sono stati importati; inoltre se apri l'editor delle macro e premi Contr-g si aprira' la finestra "Immediata" che conterra' l'elenco dei file processati.
Se il file di destinazione continua a essere vuoto vedremo cosa fare, alla luce delle informazioni che il messaggio e la finestra Immediata ci danno.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 18:19

Usando questa nuova macro da il solito errore di runtime su questa riga: myFile = Dir(myPath & "*.xls").

p.s. ho provato ad eliminare questa riga, la macro parte e dice completato ma con 0 file uniti.
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 18:22

Hai provato?
Perche' quell'istruzione e' disabilitata nella macro che ti ho passato...
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 18:26

Forse non si era aggiornata la macro, ho riprovato ma come ti dicevo dice Completato: 0 files. Sembra che non trovi completamente i file
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 18:53

Non devi cancellare niente dalla macro che ti ho passato poco fa; la copi, la incolli in un Modulo standard, la mandi in esecuzione. Per evitare occasioni di errore cancella anche la vecchia Sub Accorpa, lasciando quindi la sola Sub Accorpa2 (quella da eseguire).
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Microsoft Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 18:58

Anthony47 ha scritto:Non devi cancellare niente dalla macro che ti ho passato poco fa; la copi, la incolli in un Modulo standard, la mandi in esecuzione. Per evitare occasioni di errore cancella anche la vecchia Sub Accorpa, lasciando quindi la sola Sub Accorpa2 (quella da eseguire).


Fatto tutto da capo utilizzando un nuovo file, purtroppo mi dice sempre Completato: 0 files
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 19:17

Sto leggendo che se i file sono stati creati su Windows allora i MacID risulteranno sballati...
Non ho capito se c'e' una soluzione.
Per prova apri un paio di file e ri-salvarli su Mac, poi controlli se almeno quelli vengono visti.

Vediamo anche se passa qualcuno che usa Excel su Mac,
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 19:27

Ma nella directory ci sono solo i file Excel da importare, piu' il file Database?

Prova a inserire e poi eseguire questa macro:
Codice: Seleziona tutto
Sub testtt()
SourceF = Dir(Application.Path & Application.PathSeparator)     '*****
Do While SourceFile <> ""
DoEvents
    Debug.Print SourceF
    SourceF = Dir
Loop
End Sub

Poi vai sul vba, premi Contr-g per aprire la finestra "Immediata" e guarda cosa c'e' scritto; pubblica nel prossimo messaggio.
Nota ***: se come scritto non restituisce un elenco file, prova ad eliminare la parte "& Application.PathSeparator"

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 19:37

EDIT: eseguo la macro, ma apparentemente non succede nulla

p.s. nella cartella ho il file database e i file da unire
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 20:12

Nella finestra "Immediata" c'e' scritto qualcosa?
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Emilio93 » 20/02/17 20:30

A quanto pare nella versione di Excel che ho hanno tagliato molte funzioni VBA, tra cui la finestra immediata. L'unica prova che posso fare è installare Excel nella partizione windows del mio Mac, da lì dovrebbe andare tutto bene no?
Emilio93
Utente Junior
 
Post: 19
Iscritto il: 19/02/17 10:26

Re: [Excel per Mac] Macro per accorpare file excel

Postdi Anthony47 » 20/02/17 23:15

Penultima prova: sostituisci la macro di prova con questa:
Codice: Seleziona tutto
Sub testtt()
SourceF = Dir(ThisWorkbook.Path & Application.PathSeparator)    '*****
frree = "H1"                                                    '<<<
Range(frree).Resize(1000, 1).ClearContents
Do While SourceF <> ""
DoEvents
    cfc = cfc + 1
    Range(frree).Offset(cfc, 0).Value = SourceF
    SourceF = Dir
Loop
End Sub

Attenzione: usera' la colonna H del foglio attivo per creare l'elenco di file presenti nel percorso. Se colonna H non e' libera modificare l'istruzione marcata <<< per dichiarare la celle iniziale di una colonna libera.

Conferma se in colonna H sono elencati solo e tutti i file da modificare, oltre al file Database.xlsm

L'uso di Excel all'interno della partizione Windows intanto immagino che richieda la disponibilita' di una licenza diversa da quella che hai, poi non so che comportamento ci si puo' aspettare.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 17441
Iscritto il: 21/03/06 16:03
Località: Ivrea

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "[Excel per Mac] Macro per accorpare file excel":


Chi c’è in linea

Visitano il forum: Anthony47 e 20 ospiti