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 StringNomeFoglio As String)
    
Dim xlApp As Excel.ApplicationwkbImporta As Excel.WorkbookwksImporta 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 StringConn As ADODB.ConnectionstrSQL As StringRS 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 strSQLConn33
        
For 1 To Cells(Cells.SpecialCells(xlCellTypeLastCell), 1).Row
            
.AddNew
            
.Fields("Prova1").Value CStr(WK.Cells(i1).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(i3).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