Ciao, spero che usi ADO.
Eccoti una funzioncina..
codice:
'passare il nome del database senza estensione...
Private Sub CompattaMDB(nomeDB as string)
   Dim bytePrima As Long
   Dim cnCompact As New JRO.JetEngine
   Dim CONN_Sorg As String
   Dim CONN_Dest As String
   Dim dbBck As String
   Dim dbApp As String
   Dim dbTemp As String
   
   'path e nome db, per salvare una copia dell'archivio prima della compattazione
   dbBck = App.Path & "\Backup\" & nomeDB & ".bck"
   
   'path e nome db da compattare
   dbApp = App.Path & "\" & nomeDB & ".mdb"
   
   dbTemp = App.Path & "\~" & nomeDB & ".mdb"
   
   On Error GoTo errorCompact
   
   Screen.MousePointer = vbHourglass
      
   CONN_Sorg = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbApp & ";User ID=;Password=;"
   CONN_Dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbTemp & ";Jet OLEDB:Engine Type=5;"
   
   If Dir(dbBck) <> "" Then
     Kill dbBck
   End If
   
   FileCopy dbApp, dbBck
  
   bytePrima = FileLen(dbApp)
   
   If Dir(dbTemp) <> "" Then
     Kill dbTemp
   End If
      
   'Compatta il database.
   cnCompact.CompactDatabase CONN_Sorg, CONN_Dest
      
   Kill dbApp
   Name dbTemp As dbApp
   
   Screen.MousePointer = vbNormal
   
   MsgBox "Compattazione del database terminata con successo." & vbCr _
   & "Prima della compattazione Byte: " & FormatNumber(bytePrima, 0) & vbCr _
   & "Dopo la compattazione Byte: " & FormatNumber(FileLen(dbApp), 0), vbInformation, "COMPATTAZIONE DATABASE"
   
   Set cnCompact = Nothing
   
   On Error GoTo 0
   Exit Sub
  
errorCompact:
   Set cnCompact = Nothing
   Screen.MousePointer = vbNormal
   MsgBox "Errore durante il tentativo di compattazione del database: " & vbCr & "Numero errore: " & Err.Number & vbCr & "Descrizione: " & Err.Description, vbCritical, "Service"
   If Dir(dbBck) <> "" Then
      If Dir(dbApp) <> "" Then
         Kill dbApp
      End If
      FileCopy dbBck, dbApp
   End If
   On Error GoTo 0
End Sub
Nel tuo progetto devi far riferimento alla libreria: Microsoft Jet and Replication Objects.
Logicamente, prima di richiamare la funzione, il database deve essere chiuso!