ma il tuo programma è interno o esterno a excel?
cmq supponendo di avere un database chiamato DB1.mdb e una tabella di nome prova con questi campi:
Prova1 --> Testo
Prova2 --> Data/Ora
Prova3 --> Numerico
questo è il programma che farei io:
Codice PHP:
Sub AproImportoExcel(strPath As String, NomeFoglio As String)
Dim xlApp As Excel.Application, wkbImporta As Excel.Workbook, wksImporta As Worksheet
Dim swAperto As Boolean
Set xlApp = New Excel.Application
xlApp.Visible = False
swAperto = False
If xlApp.Workbooks.Count > 0 Then swAperto = True
Set wkbImporta = xlApp.Workbooks.Add(strPath)
Set wksImporta = wkbImporta.Worksheets(NomeFoglio)
Call AggiornaDBAccess(wksImporta)
wkbImporta.Close
xlApp.Visible = True
If swAperto = False Then xlApp.Quit
Set wksImporta = Nothing
Set wkbImporta = Nothing
Set xlApp = Nothing
End Sub
Sub AggiornaDBAccess(WK As Excel.Worksheet)
Dim strConn As String, Conn As ADODB.Connection, strSQL As String, RS As ADODB.Recordset
strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:/DB1.mdb"
Set Conn = CreateObject("ADODB.connection")
Conn.Open strConn
strSQL = "select * from prova"
Set RS = CreateObject("ADODB.Recordset")
With RS
.Open strSQL, Conn, 3, 3
For i = 1 To Cells(Cells.SpecialCells(xlCellTypeLastCell), 1).Row
.AddNew
.Fields("Prova1").Value = CStr(WK.Cells(i, 1).Value) 'converto dato in tipo Stringa
.Fields("Prova2").Value = CDate(WK.Cells(i, 2).Value) 'converto dato in tipo Data
.Fields("Prova3").Value = CInt(WK.Cells(i, 3).Value) 'converto dato in tipo Intero
.Update
Next
.Close
End With
Conn.Close
Set RS = Nothing
Set Conn = Nothing
End Sub
alla sub AproImportoExcel devi passagli la path (incluso il nome del file) del foglio Excel e il nome del foglio che andrà analizzato dal programma e aggiunto al db.
prima di far partire il programma ricordati di cambiare la Path del db e i campi. con la conversione dei dati (cstr, cdate, cint, ecc...) appropriato al campo.
un ultima annotazione: se la lunghezza della cella che ti dà null come valore è maggiore di 255 caratteri ti conviene convertire il campo da Testo (massimo 255 caratteri) a Memo (massimo 65536 caratteri)
fammi sapere