Condividi:        

import dati da files 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

import dati da files excel

Postdi lellolory » 13/09/18 15:47

ciao a tutti, con il nostro staff vorremmo fare delle statistiche sulle partite di calcio che andiamo a vedere.
Vi allego il file che dovrei ricevere ogni settimana e dal quale vorrei estrapolare in automatico la riga di informazioni per costruire un grande database. Da questo DB vorrei ricavare informazioni di tipo statistico.
E' possibile creare qualcosa che in automatico vada a leggere la riga dal file (che ovviamente sarà denominato con AAAAMMGG cognome.xls) e mi crei un database? spero di esser stato chiaro
grazie a tutti
lellolory
Utente Junior
 
Post: 18
Iscritto il: 23/01/14 10:41

Sponsor
 

Re: import dati da files excel

Postdi Anthony47 » 13/09/18 18:20

Certamente "qualcosa si puo' fare"; per una proposta "piu' dettagliata" serve saper come sono fatti gli N file Excel e quali informazioni vanno da essi estratte.
Per le istruzioni su come allegare un file:
viewtopic.php?f=26&t=103893&p=605487#p605487

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

Re: import dati da files excel

Postdi lellolory » 14/09/18 13:31

ecco a te il file:
https://we.tl/t-mFaW2T0fDo

la riga da esportare è la nr.5

tutte le righe dei file dovranno convergere in un unico file che servirà da DB. Ogni file che viene messo nella cartella sarà rinominato in maniera precisa con AAAAMMGG cognome.xlsx

di ogni file deve esser presa la riga 5 messa sotto quelle già esistenti.
lellolory
Utente Junior
 
Post: 18
Iscritto il: 23/01/14 10:41

Re: import dati da files excel

Postdi Anthony47 » 14/09/18 18:09

Allora...
Parti da un nuovo file vuoto; metti in un nuovo Modulo standard del vba la seguente macro:
Codice: Seleziona tutto
Sub myImport()
Dim wDir As String, sDir As String, myFile As String, fSo As Object, fCnt As Long
Dim myNext As Long, destSh As Worksheet, DPlex As Boolean, NName As String
'
wDir = "C:\Users\UTENTE\PercorsoCompleto\"          '<<< La directory con i file da importare, con \ finale
sDir = "LAVORATI\"                                  '<<< La subdir in cui saranno spostati i file, con \ finale
'
Set destSh = ThisWorkbook.Sheets(1)
Set fSo = CreateObject("Scripting.FileSystemObject")
myFile = Dir(wDir & "*.xls")
Do
DoEvents

    If myFile = "" Then Exit Do
    If myFile <> ThisWorkbook.Name Then
        Workbooks.Open myFile
        Sheets(1).Select
        myNext = destSh.Cells(destSh.Rows.Count, "A").End(xlUp).Row + 1
        destSh.Cells(myNext, 1) = myFile
        destSh.Cells(myNext, 2).Resize(1, 62).Value = Range("A5").Resize(1, 62).Value
        ActiveWorkbook.Close False
        NName = Format(Now, "yyyy-mm-dd") & "_" & myFile
reDP:
        If fSo.FileExists(wDir & sDir & NName) Then
            DPlex = True
            NName = "#" & NName
        End If
        If DPlex Then DPlex = False: GoTo reDP
        Name wDir & myFile As wDir & sDir & NName
        fCnt = fCnt + 1
    End If
    myFile = Dir
Loop
Set fSo = Nothing
MsgBox ("Completato..." & vbCrLf & "File importati: " & fCnt)
End Sub
Le righe marcate <<< vanno personalizzate come da commento; in particolare in wDir scriverai il percorso completo all'interno del quale posizionerai i file da importare, e in sDir scriverai il nome di una subdirectory (contenuta all'interno di wDir; devi crearla tu) in cui saranno spostati i file dopo l'importazione. Ambedue le stringhe devono avere lo "\" finale.
Salva il file col nome che preferisci.

Quando sei pronto lancia la Sub myImport: ogni file presente nella wDir sara' aperto e il suo contenuto sara' inserito in foglio "1" del nuovo file, a partire da colonna B, accodandoli a quanto gia' presente. In colonna A sara' indicato il file di provenienza di quel record.
Il file importato viene chiuso e spostato nella subdirectory sDir, anteponendo al nome file una stringa nel formato "yyyy-mm-dd", es 2018-09-14; se in wDir un file con quel nome e' gia' presente, sara' ulteriormente anteposto il carattere "#"

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

Re: import dati da files excel

Postdi lellolory » 17/09/18 15:58

E' perfetto! Unica cosa che modificherei è la seguente. Avendo creato un foglio nuovo non ho l'intestazione dei dati, quindi non so i numeri a cosa si riferiscono. come posso risolvere?
posso portarmi delle etichette di colonna in maniera tale da raggruppare i dati con delle pivot e sapere sempre a cosa si riferiscono?

grazie mille per tutto intanto
lellolory
Utente Junior
 
Post: 18
Iscritto il: 23/01/14 10:41

Re: import dati da files excel

Postdi lellolory » 17/09/18 16:12

Anthony47 ha scritto:Allora...
Parti da un nuovo file vuoto; metti in un nuovo Modulo standard del vba la seguente macro:
Codice: Seleziona tutto
Sub myImport()
Dim wDir As String, sDir As String, myFile As String, fSo As Object, fCnt As Long
Dim myNext As Long, destSh As Worksheet, DPlex As Boolean, NName As String
'
wDir = "C:\Users\UTENTE\PercorsoCompleto\"          '<<< La directory con i file da importare, con \ finale
sDir = "LAVORATI\"                                  '<<< La subdir in cui saranno spostati i file, con \ finale
'
Set destSh = ThisWorkbook.Sheets(1)
Set fSo = CreateObject("Scripting.FileSystemObject")
myFile = Dir(wDir & "*.xls")
Do
DoEvents

    If myFile = "" Then Exit Do
    If myFile <> ThisWorkbook.Name Then
        Workbooks.Open myFile
        Sheets(1).Select
        myNext = destSh.Cells(destSh.Rows.Count, "A").End(xlUp).Row + 1
        destSh.Cells(myNext, 1) = myFile
        destSh.Cells(myNext, 2).Resize(1, 62).Value = Range("A5").Resize(1, 62).Value
        ActiveWorkbook.Close False
        NName = Format(Now, "yyyy-mm-dd") & "_" & myFile
reDP:
        If fSo.FileExists(wDir & sDir & NName) Then
            DPlex = True
            NName = "#" & NName
        End If
        If DPlex Then DPlex = False: GoTo reDP
        Name wDir & myFile As wDir & sDir & NName
        fCnt = fCnt + 1
    End If
    myFile = Dir
Loop
Set fSo = Nothing
MsgBox ("Completato..." & vbCrLf & "File importati: " & fCnt)
End Sub
Le righe marcate <<< vanno personalizzate come da commento; in particolare in wDir scriverai il percorso completo all'interno del quale posizionerai i file da importare, e in sDir scriverai il nome di una subdirectory (contenuta all'interno di wDir; devi crearla tu) in cui saranno spostati i file dopo l'importazione. Ambedue le stringhe devono avere lo "\" finale.
Salva il file col nome che preferisci.

Quando sei pronto lancia la Sub myImport: ogni file presente nella wDir sara' aperto e il suo contenuto sara' inserito in foglio "1" del nuovo file, a partire da colonna B, accodandoli a quanto gia' presente. In colonna A sara' indicato il file di provenienza di quel record.
Il file importato viene chiuso e spostato nella subdirectory sDir, anteponendo al nome file una stringa nel formato "yyyy-mm-dd", es 2018-09-14; se in wDir un file con quel nome e' gia' presente, sara' ulteriormente anteposto il carattere "#"

Fai sapere...



altro problema che ho riscontrato. una volta fatto partire la prima volta, mi importa le righe ma la seconda volta mi dice che non trova i file e non va avanti. La seconda volta ovviamente il db è già popolato con i primi file esportati.
lellolory
Utente Junior
 
Post: 18
Iscritto il: 23/01/14 10:41

Re: import dati da files excel

Postdi Anthony47 » 17/09/18 21:55

E' perfetto! Unica cosa che modificherei è la seguente. Avendo creato un foglio nuovo non ho l'intestazione dei dati, quindi non so i numeri a cosa si riferiscono. come posso risolvere?
Mettici le etichette di colonna copiandole da un file qualsiasi, non danno nessun fastidio.


altro problema che ho riscontrato. una volta fatto partire la prima volta, mi importa le righe ma la seconda volta mi dice che non trova i file e non va avanti
Come avevo detto, ogni file dopo l'importazione viene spostato nella subdirectory sDir, anteponendo al nome file una stringa nel formato "yyyy-mm-dd"; questo e' fatto per evitare di importare due volte gli stessi dati.
Pero' se ricevi altri file e li posizioni nella directory wDir allora essi saranno regolarmente importati.

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

Re: import dati da files excel

Postdi lellolory » 19/09/18 09:32

E' corretto che i file già esaminati vengano spostati in un'altra cartella, è perfetto!
il problema è che dopo aver lanciato una prima volta la macro, questa smette di funzionare e non mi importa gli altri file ricevuti che sposto settimanalmente nella directory principale.
mi dice: nomefile.xls non trovato
lellolory
Utente Junior
 
Post: 18
Iscritto il: 23/01/14 10:41

Re: import dati da files excel

Postdi Anthony47 » 19/09/18 16:16

Modifica Workbooks.Open myFile in
Codice: Seleziona tutto
Workbooks.Open wDir & myFile

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


Torna a Applicazioni Office Windows


Topic correlati a "import dati da files excel":


Chi c’è in linea

Visitano il forum: Nessuno e 42 ospiti