A standard way to do this is to create an ADO connection to the database, then run down the rows in the spreadsheet, looping through the fields.
It runs pretty quickly on newish hardware -- about 100 records per second over a network, in my experience, loading around 30 fields.
Code is as follows -- make changes according to the comments. You will need to set a reference to the Microsoft ADO 2.x library (if you use XP, you should have 2.6 or higher). To do this, in any module, go to Tools | References and scroll down the list, select the referece (it may be Microsoft ActiveX Data Objects 2.x Library), then OK to exit.
DenisCode:Sub DataToMDB_ADO_Sample() Dim cnn As ADODB.Connection Dim rst As ADODB.Recordset Dim sSQL As String Dim sPath As String Dim rSource As Range Dim MyConn Dim Rw As Long, LastRow As Long Dim sTable As String 'Define variables, create connection to database Set rSource = Range("DataLoader") 'Named range containing records to laod to Db LastRow = rSource.Rows.Count sTable = "Insert your table name here" 'Change to suit sPath = "C:\Temp\MyDatabase.mdb" 'Replace with the full path to your Db MyConn = sPath Set cnn = New ADODB.Connection With cnn .Provider = "Microsoft.Jet.OLEDB.4.0" .Open MyConn End With Set rst = New ADODB.Recordset rst.CursorLocation = adUseServer rst.Open Source:=sTable, ActiveConnection:=cnn, _ CursorType:=adOpenDynamic, LockType:=adLockOptimistic, _ Options:=adCmdTable 'Load records to the table Application.ScreenUpdating = False Application.GoTo Range("DataLoader") For Rw = 2 To LastRow ActiveCell.Offset(1, 0).Select rst.AddNew Application.StatusBar = "Adding Record " & Rw & " of " & LastRow 'Adjust to use the field names in your destination table. 'Add or remove code to match the # of destination fields. rst("Project") = Cells(ActiveCell.Row, 1) rst("Type") = Cells(ActiveCell.Row, 2) rst("Business Unit") = Cells(ActiveCell.Row, 3) rst("Fin Status") = Cells(ActiveCell.Row, 4) rst("# Stages") = Cells(ActiveCell.Row, 5) rst.Update Next Rw Application.StatusBar = "Ready" 'Clean up and inform the user rst.Close cnn.Close Application.ScreenUpdating = True End Sub