Importare dati da più files excel in access

Dejavier

Nuovo Utente
31 Mar 2016
2
0
0
Ciao a tutti,
avrei bisogno di importare dati da più file excel contenuti in una cartella in una determinata tabella di access.
I file excel hanno la stessa struttura ed i dati da importare sono contenuti in 2 fogli: il primo foglio "Informazioni generali" contiene 2 informazioni da ripetere in corrispondenza degli altri dati contenuti nel secondo foglio "Utenze domestiche".

Ho provato con un ciclo Do ... Loop ma funziona soltanto su 1 file.

Il ciclo dovrebbe inserire nella tabella di access "ud", tramite la query (INSERT INTO), i dati copiati da tutti i file fino a quando nel foglio "Utenze domestiche" non trova una cella vuota nella prima colonna.

Di seguito il codice con il Loop che copia correttamente i dati soltanto da 1 file: invece di lanciare la query ho inserito un Msgbox.

Vorrei quindi inserire un ciclo per eseguire la stessa operazione per tutti i files contenuti nella cartella ma non riesco.


Private Sub Comando1_Click()
Dim SourceDir As String
Dim app As Object
Dim file As Object
Dim foglio As Object
Dim riga As Integer
Dim query As String

riga = 2
SourceDir = "C:\Users\s.dedonato\Desktop\prova\" 'cartella da dove copiare tutti i files'
myFile = Dir(SourceDir & "\*.xls*") 'nome files da cui estrarre i dati'


Set app = CreateObject("Excel.Application")
Set file = app.Workbooks.Open(SourceDir & myFile)
Set anagrafica = file.worksheets("Informazioni generali")
Set foglio = file.worksheets("Utenze domestiche")

Do

If foglio.Cells(riga, 1) = "" Then
Exit Do
End If

MsgBox ("lancio query per il file" & myFile)

'query = "INSERT INTO ud(istat, comune, tipo_ut, ka, kb) VALUES('" & anagrafica.Cells(3, 2) & "','" & anagrafica.Cells(2, 2) & "','" & foglio.Cells(riga, 1) & "','" & foglio.Cells(riga, 2) & "','" & foglio.Cells(riga, 3) & "');"
'DoCmd.SetWarnings False 'disabilito gli avvisi
'DoCmd.RunSQL query 'lancia la query chiamata query
'DoCmd.SetWarnings True 'riattivo gli avvisi

MsgBox ("Istat - " & anagrafica.Cells(3, 2) & "," & "Comune - " & anagrafica.Cells(2, 2) & "," & "utenza - " & foglio.Cells(riga, 1) & "," & "ka - " & foglio.Cells(riga, 2) & "," & "kb - " & foglio.Cells(riga, 3))


riga = riga + 1 'per incrementare le righe per il ciclo


'Active.Workbook.Close = False 'non so se è utile chiudere il file dopo il loop

'myFile = Dir dovrei inserire un loop per far leggere tutti i file contenuti nella cartella

Loop

MsgBox ("arrivati in fondo")

End Sub


Grazie mille
 

Dejavier

Nuovo Utente
31 Mar 2016
2
0
0
Ho provato anche come di seguito con 2 file.

Il loop dovrebbe farlo per tutte le righe di ogni file fino a trovare uno spazio vuoto, una volta finito dovrebbe cambiare file e ricominciare.

In questo modo copia solo la prima riga del primo file e solo la seconda del secondo file. Dovrebbe copiare 6 righe da ogni file.
......
riga = 2
SourceDir = "C:\Users\s.dedonato\Desktop\prova\" 'cartella da dove copiare tutti i files'
myFile = Dir(SourceDir & "\*.xls*") 'nome files da cui estrarre i dati'

Do While myFile <> ""

Set app = CreateObject("Excel.Application")
Set file = app.Workbooks.Open(SourceDir & myFile)
Set anagrafica = file.worksheets("Informazioni generali")
Set foglio = file.worksheets("Utenze domestiche")


If foglio.Cells(riga, 1) = "" Then
Exit Do
End If

..........


'file.Workbooks.Close savechanges:=False 'serve per chiudere file dopo il loop

myFile = Dir() 'dovrei inserire un loop per far leggere tutti i file contenuti nella cartella

Loop

MsgBox ("arrivati in fondo")


End Sub



Se invece scrivo

.....
riga = 2
SourceDir = "C:\Users\s.dedonato\Desktop\prova\" 'cartella da dove copiare tutti i files'
myFile = Dir(SourceDir & "\*.xls*") 'nome files da cui estrarre i dati'

Do While myFile <> ""

Set app = CreateObject("Excel.Application")
Set file = app.Workbooks.Open(SourceDir & myFile)
Set anagrafica = file.worksheets("Informazioni generali")
Set foglio = file.worksheets("Utenze domestiche")

Do While foglio.Cells(riga, 1) <> ""

......
riga = riga + 1 'per incrementare le righe per il ciclo

Loop

'file.Workbooks.Close savechanges:=False 'serve per chiudere file dopo il loop

myFile = Dir() 'dovrei inserire un loop per far leggere tutti i file contenuti nella cartella

Loop

MsgBox ("arrivati in fondo")


End Sub

Copia le 6 righe del primo file e termina il Loop, sembra che così non veda il loop su myFile.
Le sto provando tutte ma non essendo molto pratico di vba non riesco a trovare la strada
Grazie ancora
 

marino51

Utente Attivo
28 Feb 2013
2.967
171
63
Lombardia
ciao,
con 3 file funziona (office 2007)
Codice:
Sub Macro1()
'SourceDir = "C:\Users\s.dedonato\Desktop\prova"
SourceDir = "e:\temp\ExcelTest\files"

Set objFSO = CreateObject("Scripting.FileSystemObject")

For Each myFile In objFSO.GetFolder(SourceDir).Files

    ' qui devi controllare l'estensione del file se nella cartella ci sono altri

    Set app = CreateObject("Excel.Application")
    Set file = app.Workbooks.Open(myFile)
'    Set anagrafica = file.Worksheets("Informazioni generali")
    Set foglio = file.Worksheets("Utenze domestiche")
    
    riga = 2

    Do While foglio.Cells(riga, 1) <> ""

'        ......

        riga = riga + 1

    Loop

    MsgBox ("file : " & myFile & "  righe : " & riga)

    'file.Workbooks.Close savechanges:=False
    file.Close

Next

MsgBox ("arrivati in fondo")
End Sub

ps, prova con "Set app =" esterna al "for", può non essere ripetuta per ogni file
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
Primian Importare dati su tabella MySQL MySQL 3
P Importare dati da Tessera Sanitaria CNS Programmazione 25
G Importare dati da file csv PHP 0
M Importare dati Xml in un file txt PHP 0
L importare dati xml a mysql PHP 29
borgo italia importare dati csv in mysql MySQL 1
F Importare dati da un file txt PHP 3
felino Importare VHS: video in bianco e nero Discussioni Varie 6
A Importare array in mysql PHP 1
Valerio93 Importare database senza backup MySQL 0
R [MySQL] importare tabella cvs MySQL 0
camilia come importare thunderbird in Outlook Windows e Software 1
F [PHP] Importare file CSV in HTML PHP 12
M Importare - Manipolare Json Array Sviluppo app per Android 2
N [MySQL] Importare un database da MAMP a Remoto MySQL 4
M [PHP] Importare file csv su server PHP 0
W [WooCommerce] importare Prodotti suddivisi con: Categorie, Prodotti, Attributi E-Commerce 6
T mysql tutorial per importare tabelle access in mysql aiuto MySQL 2
F [PHP] Importare file CSV in HTML PHP 3
L [Wordpress][HTML]Importare articoli o progetti in pagina html WordPress 0
A [WordPress] Importare immagini in post WordPress 2
G Importare database dentro un contenitore (docker) wordpress Programmazione 1
S importare testi da file esterno a grafica photoshop Photoshop 0
alessandra86 Importare un xlsx in un database Mysql PHP 2
O importare file csv mysql PHP 3
G importare database mysql dentro un contenitore (docker) PHP 6
Laskot [Javascript] Importare file JSON in local storage Javascript 2
utente importare css da pagina html HTML e CSS 1
felino Importare i post di Facebook tra gli articoli di Wordpress WordPress 0
booklisa Tema Wordpress importare da demo Content Management System (CMS) 3
B IMPORTARE FILE .FRM E .IBD CON PHPMYADMIN MySQL 0
E Importare codice html da una pagina tramite php PHP 9
N come importare da dbf a mysql? MySQL 2
asevenx Importare file excel in database mysql PHP 3
L Importare post multipli in wp WordPress 5
G Cerco script per importare file .xml e .csv. Lavoro retribuito Offerte e Richieste di Lavoro e/o Collaborazione 2
neo996sps [PHP] Importare immagini in pagina PHP 0
otto9due importare file .php tramite .load dove sbaglio?? jQuery 2
C Importare file XML Javascript 1
L Importare e troncare una stringa da url PHP 16
M Importare correttamente in tabella file CSv con doppi apici MySQL 4
M Importare pagine database pubblico in foglio di calcolo OpenOffice Windows e Software 0
ivarello Importare CSV e compilare le giuste tabelle PHP 2
M CSV to MySQL - importare da csv in MySQL MySQL 3
E Importare valori da una tabella MySQL in una tabella con checkbox PHP 4
G Importare file txt in word Windows e Software 2
D errore 1064 nell'importare txt MySQL 1
A [php]Importare contatti PHP 2
G importare csv file in tabella oracle XE da script php PHP 1
B Wordpress: importare blog da feed rss WordPress 3

Discussioni simili