Ahí va un ejemplo de ejecución de una función (no una macro) tal y como yo lo hago.
Dim oAccess As Object
Dim bAccessNoSeEjecutaba As Boolean
On Error Resume Next
Set oAccess = GetObject(, "Access.Application")
If Err.Number <> 0 Then bAccessNoSeEjecutaba = True
Err.Clear
If bAccessNoSeEjecutaba Then
Set oAccess = CreateObject("Access.Application")
End If
oAccess.Visible = False
oAccess.OpenCurrentDatabase "C:\BD\bd1.mdb"
'Ejecuta la función "Imprimir_Facturas" pasándole el parámetro
oAccess.Application.Run "Imprimir_Facturas", aFacturasParaImprimir
If (bAccessNoSeEjecutaba) Then
oAccess.Quit
Else
oAccess.Visible = True
End If
On Error Goto 0
Set oAccess = Nothing