Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro excel per importare file csv

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

Macro excel per importare file csv

Postdi colcoz » 06/02/15 15:36

Salve a tutti,
io devo importare n files .csv con nomi differenti e tutti nella stessa cartella all'interno di un file excel 2010 con il comando "carica dati esterni da testo".
leggendo su diversi forum e diverse discussioni sono riuscito a creare una macro che mi fa la scansione della cartella e mi importa i files correttamente, solo che non capendo i comandi utilizzati (ammetto di non essere forte in programmazione e ho copiato diversi pezzi di codice facendo un accrocchio) se volessi replicarla non sarei ingrado. qualcuno riesci a spiegarmi alcuni comandi (li ho sengati in rosso) presenti nel codice che vi allego? grazie

Sub macro1()
'
' macro1 Macro
'

'
a = 1
b = 1
Dim codice
Worksheets("Appoggio Macro").Activate
Cells(2, 1).Value = ""
Cells(4, 1).Value = ""
Cells(6, 1).Value = a
Cells(7, 1).Value = b
codice = InputBox("il mese da analizzare:", "testo ")
Cells(2, 1).Value = codice
Dim direct As String
Dim NomiFiles() As String
Dim f As Integer
direct = Cells(5, 1).Value
NomiFiles = ScanDir(direct)
end sub

questa è la macro di partenza che richiama la funzione:

Function ScanDir(pth As String) As Variant

Dim i As Integer
Dim aFiles() As String

i = 0
pth = pth & IIf(Right(pth, 1) <> "\", "\", "")

f = Dir(pth)

Do While f <> ""
If GetAttr(pth & f) <> vbDirectory Then

ReDim Preserve aFiles(i)
aFiles(i) = pth & f
i = i + 1
Cells(4, 1).Value = f

Call MacroAppoggio
End If
f = Dir
Loop

ScanDir = aFiles
End Function

la macro macroappoggio poi continua l'importazione e lavora i files importati ma su quella sono aposto.

Grazie mille
colcoz
Utente Junior
 
Post: 27
Iscritto il: 06/02/15 15:23

Sponsor
 

Re: Macro excel per importare file csv

Postdi Anthony47 » 07/02/15 01:01

Ciao colcoz, benvenuto nel forum.

Pochi commenti al codice pubblicato...
NomiFiles = ScanDir(direct) mette nella variabile NomiFiles il risultato della funzione ScanDir

pth = pth & IIf(Right(pth, 1) <> "\", "\", ""); per il significato delle funzioni IIf e Right devi consultare l' help on line del vba (mentre visualizzi il codice della macro all' interno dell' editor delle macro, posiziona il cursore all' interno della voce da esaminare, premi F1)
Idem (help on line) per le funzioni Do (While), If, GetAttrib.
Il motivo per cui ti invito a consultare di persona l' help on line e' che si tratta di una risorsa immensa e sottoutilizzata, ricca di informazioni e di esempi di codice, che non puoi ignorare.

A grandi linee, la prima macro si limita a leggere da A5 una directory; nella ScanDir leggi un nome file dopo l' altro e ci farai qualche operazione.
La GetAttr sei costretto a usarla perche' fai una semplice "Dir" senza indicare il tipo di file che cerchi e quindi devi ignorare eventuali risultati che siano Directory; io avrei usato f = Dir(pth & "*.csv") in modo da avere solo l' elenco dei file csv (se e' il tipo di file che cerchi).
Mi sembra inutile la compilazione dell' elenco file all' interno dell' array aFiles, che non vedo utilizzare ne' in ScanDir ne' in Macro1; altre cose non so commentarle perche' non conosco l'algoritmo complessivo che devi realizzare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13885
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Macro excel per importare file csv

Postdi colcoz » 09/02/15 14:17

ciao Anthony
innanzitutto grazie per la risposta, ora ho qualcosa di più chiaro in mente :)
in realtà non mi ricordo se l'ho scritto, ma è una macro assemblata prendendo codici da diversi forum... infatti la compilazione dell'elenco file nell'array non viene utilizzata per nessun motivo :)
ora proverò a toglierla e vedere se gira lo stesso la macro... anche se devo capire cosa togliere o cosa no :D
ma farò un po' di test.
l'unica cosa che non riesco a togliere (probabilmente è per un mio errore da ignorante in materia) è la variabile nomifiles che volevo convertirla nel call diretto della funzione, ma non ci riesco...
colcoz
Utente Junior
 
Post: 27
Iscritto il: 06/02/15 15:23

Re: Macro excel per importare file csv

Postdi colcoz » 09/02/15 14:21

ok risolto per quanto riguarda la compilazione dell'elenco file :D
ora piano piano la sistemerò
colcoz
Utente Junior
 
Post: 27
Iscritto il: 06/02/15 15:23


Torna a Applicazioni Office Windows


Topic correlati a "Macro excel per importare file csv":


Chi c’è in linea

Visitano il forum: Nessuno e 18 ospiti