I have used the following code to merge a single Excel file into a DB...you can probably get it to recurse a directory and grab each excel file pretty easily:
Note: In my case I had unique ID fields so I only compared this to see if it was present in the DB, you may need to compare more throughly.
Sub Merger()
'Declare variables for Excel
Dim oExcel As Object
Dim xlsh1 As Object
Dim xlwb As String
'Declare array for excel file records
Dim axl() As String
'Declare variables for database connectivity
Dim conn As adodb.Connection
Dim rs As adodb.Recordset
Dim statement As String
'Declare array for database records
Dim adb() As String
'Declare counters
Dim row As Long
Dim i As Long
Dim j As Long
Dim x As Long
Dim y As Long
Dim Match as Integer
'Assign order of desired fields
ID = 0
Name = 1
Measure = 2
TypeCode = 3
'Start Excel for inputed file
xlwb = UCase(InputBox("Enter Excel file with extension:", "xlwb"))
Set oExcel = CreateObject("Excel.Application")
oExcel.Workbooks.open xlwb, false, true
Set xlsh1 = oExcel.ActiveWorkbook.Worksheets(1)
row = xlsh1.UsedRange.Rows.Count
'Resize Excel array per number of fields/rows
Redim axl(4, row)
'Open a connection to the database
Set conn = New adodb.Connection
conn.Open "DSN=NAME;" & "TRUSTED_CONNECTION=YES"
'Define which fields to be read and provide sort order
statement = "SELECT ID, Name, UoM, TypeCode, FROM Table ORDER BY ID"
Set rs = conn.Execute(statement, , adCmdText)
'Resize record array per number of fields/ max rows
ReDim adb(4, 64999)
'Start by getting the database
Do While Not rs.EOF
i=0
'Pull each field from database into the array
adb(ID, i) = rs.Fields(ID).Value
adbr(Name, i) = rs.Fields(Name).Value
adb(Measure, i) = rs.Fields(Measure).Value
adb(TypeCode, i) = rs.Fields(TypeCode).Value
i = i + 1
rs.MoveNext
Loop
'Resize record array now that we know how big
ReDim adb(4, i - 1)
'Get the data from Excel file
For j = 1 To row
axl(Id, j) = xlsh1.Cells(j, 1).Value
axl(Name, j) = xlsh1.Cells(j, 2).Value
axl(Measure, j) = xlsh1.Cells(j, 3).Value
axl(TypeCode, j) = xlsh1.Cells(j, 4).Value
Next j
'Perform compare to see if xl data exists in db
For x = 0 To i - 1
Match = 0
For y = 0 to row
If adb(ID, x) = axl(Id, y) Then Match = 1
Next y
If Match <> 1 Then
'Add record to database
rs.AddNew
rs!ID = axl(ID, y)
rs!Name = axl(Name, y)
rs!Measure = axl(Measure, y)
rs!TypeCode = axl(TypeCode, y)
rs.Update
End If
Next x
'Clear counters
row = 0
i = 0
j = 0
x = 0
y = 0
Match = 0
'Clear field variables
ID = 0
Name = 0
Measure = 0
TypeCode = 0
'Clear arrays
ReDim adb(0,0)
ReDim axl(0,0)
Close connection to the database
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
'Close Excel without saving
xlsh1.Close False
oExcel.Quit
'Clear Excel variables
xlwb = ""
Set oExcel = Nothing
Set xlsh1 = Nothing
End Sub