Sebpas,
Use ADO and also set a reference to MS Jet and Replication Objects. Below is a code snippet that I use and works fine.
Public Enum AccessEngine
ACC97 = 4
ACC2000 = 5
End Enum
Public Function CompactAccessDB(Optional ByVal iEngine As AccessEngine = ACC2000) As Boolean
Dim JRO As JRO.JetEngine
Set JRO = New JRO.JetEngine
Dim sSourceDB As String, cTemp As String
Dim sDestDB As String, cMaster As String, cBackup As String
cMaster = cIM & "\MyDatabase.Mdb"
cBackup = cIM & "\MyDatabase.Bkp"
' ----- Delete Target File
cTemp = cIM & "\MyTemp.Mdb"
Call KillTargetFile(cTemp)
' ----- Make A Backup Of The Current MDB
CopyFile cMaster, cBackup, False
' ----- Compact Database
On Local Error GoTo NoCompact
sSourceDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cMaster
sDestDB = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & cTemp
JRO.CompactDatabase sSourceDB, sDestDB & ";Jet OLEDB:Engine Type=" & iEngine
' ----- Copy compacted Temp MDB Back To Master
CopyFile cTemp, cMaster, False
' ----- Delete Temp MDB
Call KillTargetFile(cTemp)
Hope this helps.
Regards, Nick