PDA

View Full Version : [ACCESS] Impoertare automaticamente dati DA EXcel A ACCESS


Micene.1
29-09-2008, 16:10
allora praticamente o diversi fogli excel

su ogni foglio excel in determinate celle ci sono dei numeri che vanno aformare un record di un database access

dovrei importare questi numeri nel database aggiungendo per ogni foglio excel un record al db

come posso fare?

MarcoGG
30-09-2008, 12:53
Se i numeri sono sempre nelle stesse celle per ogni foglio Excel, si dovrebbe risolvere con poche righe di codice. Un bel For Each che cicla sui fogli, e una semplice Insert verso il DB... Ma prova ad essere un po' più preciso sulle specifiche... ;)

Micene.1
30-09-2008, 13:18
Se i numeri sono sempre nelle stesse celle per ogni foglio Excel, si dovrebbe risolvere con poche righe di codice. Un bel For Each che cicla sui fogli, e una semplice Insert verso il DB... Ma prova ad essere un po' più preciso sulle specifiche... ;)

hai ragione - allora:

sono dei fogli excel di valutazione

esempio: foglio valutazione prodotto A
nel secondo sheet ho in 3 (colonne) *2 (righe) la situazione seguente:

Valutazione 1 | valutazione 2 | valutazione 3
--------------------------------------------
2 | 3 | 3,5


poi ho un altro foglio excel di valutazione sempre con la stessa impostazione (di fatto cambiano solo i valori numerici delle valutazioni e il nome del file excel)

i campi sono sempre gli stessi (valutazione 1, 2 3) e si trovano sempre nello stesso sheet degli excel

ora vorrei che questi dati presenti in diversi file excel cosi impostati si potessero automaticamnete esportare in un DB access in modod da avere una tabella con i tre campi:

valutazione 1 valutazione 2 valutazione 3
3 3
3 3
5 4
3 4
.... ....


e cosi via


sinceramente ancora nn ho capito se conviene fare una macro da ogni file EXCEL (che dice in ogni file excel salva queste valutazioni nel DB che progressivamente si accresce) oppure una procedura di importazione in access

MarcoGG
30-09-2008, 15:04
sinceramente ancora nn ho capito se conviene fare una macro da ogni file EXCEL (che dice in ogni file excel salva queste valutazioni nel DB che progressivamente si accresce) oppure una procedura di importazione in access

Sicuramente più funzionale la seconda che hai detto. ;)
Si può fare in modo abbastanza compatto, senza scomodare ADO, direttamente da Access, visto che i valori da leggere sono pochi.
Puoi cominciare con questa mia Function che ha lo scopo di leggere da Access un valore di coordinate note, in un file Xls chiuso ( senza bisogno di aprire Excel ) :

Private Function ValoreCella(fileXls As String, nomeFoglio As String, indCella As String) As Single

Dim WBK As Workbook
Dim valore As Single
Set WBK = Workbooks.Open(fileXls, True, True)
If Not WBK Is Nothing Then
valore = WBK.Worksheets(nomeFoglio).Range(indCella).Value
WBK.Close False
Set WBK = Nothing
End If
ValoreCella = valore

End Function

Il codice utilizzatore si troverà in una maschera Access (dove va messa la Function stessa), ad esempio associato ad un Command, che chiamerà 3 volte la funzione, leggendo i 3 valori per ogni file Excel, e inserendo poi un record per volta...
Ovviamente le librerie Excel vanno referenziate in Access, altrimenti non funzionerà.

Micene.1
30-09-2008, 18:07
Sicuramente più funzionale la seconda che hai detto. ;)
Si può fare in modo abbastanza compatto, senza scomodare ADO, direttamente da Access, visto che i valori da leggere sono pochi.
Puoi cominciare con questa mia Function che ha lo scopo di leggere da Access un valore di coordinate note, in un file Xls chiuso ( senza bisogno di aprire Excel ) :

Private Function ValoreCella(fileXls As String, nomeFoglio As String, indCella As String) As Single

Dim WBK As Workbook
Dim valore As Single
Set WBK = Workbooks.Open(fileXls, True, True)
If Not WBK Is Nothing Then
valore = WBK.Worksheets(nomeFoglio).Range(indCella).Value
WBK.Close False
Set WBK = Nothing
End If
ValoreCella = valore

End Function

Il codice utilizzatore si troverà in una maschera Access (dove va messa la Function stessa), ad esempio associato ad un Command, che chiamerà 3 volte la funzione, leggendo i 3 valori per ogni file Excel, e inserendo poi un record per volta...
Ovviamente le librerie Excel vanno referenziate in Access, altrimenti non funzionerà.

grazie mille della risposta...domani vedo un po' di smanettarci..