Option Compare Database
Option Explicit
Function ImprimeReporteLejano(NombreReporte As String, Optional ModoApertura As String, Optional FiltroReporte As String, Optional WhereReporte As String)
    ' Francisco García Aguado Febrero de 2002
    ' Esta rutina trata de imprimir un reporte fuera de esta base de datos
    ' con origen de datos en la Mdb, vinculada en ruta de vinculacion del programa
    ' El problema se plantea: Primero hay que localizar automaticamente la ruta
    ' de vinculacion del programa->Funcion RutaVinculacion
    ' Una vez localizada, se trata de que dicho reporte recoja los datos Reales
    ' que el usuario tiene en esos momentos para imprimir.-
    
    Dim AplicAccesS As Access.Application
    Dim BaseLejana As String
    Set AplicAccesS = New Access.Application
    ' Abrir la base de datos en Microsoft Access lejana. En este caso
    ' la que contiene las tablas vinculadas y el Reporte a imprimir
    ' Primero pongo la ruta de Vinculacion.-
    ' y la meto en el string BaseLejana
    BaseLejana="C:\MiCarpeta\MisDatos.mdb"
    
    
    AplicAccesS.OpenCurrentDatabase BaseLejana
    AplicAccesS.DoCmd.OpenReport NombreReporte, acViewNormal, FiltroReporte, WhereReporte

    MsgBox "Haga clic en Aceptar cuando " & NombreReporte & _
        " haya terminado de imprimirse.", vbInformation + vbOKOnly, "Imprimiendo..."
    
    AplicAccesS.CloseCurrentDatabase
    Set AplicAccesS = Nothing
End Function


'La llamada a esta función, desde cualquier botón de comando de un formulario
'sería muy simple:
ImprimeReporteLejano "TuReporte", acViewNormal




Otra consideración. Si no sabes cual es la ruta completa de la MDB
que contiene las tablas vinculadas y los reportes, en vez de poner la linea fija:

BaseLejana="C:\MiCarpeta\MisDatos.mdb"

podrías poner
BaseLejana=RutaVinculacion

donde Rutavinculacion es la siguiente función que te devuelve
automaticamente la ruta de la MDB de tablas vinculadas y reportes:

'Esto iría en otro modulo BAS para no mezclar funciones:
Option Compare Database
Option Explicit
Private BaseDatosActual As Database
Private CadenaNombreTablaVinculada As String
Private StrRutaVinculacionBD As String
Private VariableContadorInteger As Integer
'*******************************************
Function RutaVinculacion() As String
On Error GoTo Etiqueta_Error_Click
  
  'Referencio Base de datos actual: Hay dos métodos. Escoger el que se quiera
  '(A)
  'Set BaseDatosActual = OpenDatabase(CodeDb.Name)
  '(B)
  Set BaseDatosActual = CurrentDb
  
     '================================================
     'Recorro la colección de tablas de la base actual
     'buscando alguna Tabla Vinculada
     '================================================
     For VariableContadorInteger = 0 To BaseDatosActual.TableDefs.Count - 1
        If Left(BaseDatosActual.TableDefs(VariableContadorInteger).Name, 4) <> "MSys" Then
            
            If (BaseDatosActual.TableDefs(VariableContadorInteger).Attributes And dbAttachedTable) Or (BaseDatosActual.TableDefs(VariableContadorInteger).Attributes And dbAttachedODBC) Then
                
                CadenaNombreTablaVinculada = BaseDatosActual.TableDefs(VariableContadorInteger).Name
                StrRutaVinculacionBD = BaseDatosActual.TableDefs(CadenaNombreTablaVinculada).Connect
                StrRutaVinculacionBD = Mid(StrRutaVinculacionBD, 11, Len(StrRutaVinculacionBD))
                'si hemos entrado aquí es que ya tenemos la ruta de las tablas
                'vinculadas. Muestro el mensaje correspondiente.-
                RutaVinculacionBD = StrRutaVinculacionBD
                BaseDatosActual.Close
                Set BaseDatosActual = Nothing
                Exit Function
            End If
        End If
    Next VariableContadorInteger
    'Si llego aquí, es que esta base de datos no tiene Tablas Vinculadas
    RutaVinculacionBD = ""
    BaseDatosActual.Close
    Set BaseDatosActual = Nothing
Exit_Funcion:
 Exit Function
Etiqueta_Error_Click:
 MsgBox "Se ha producido el Error Nº: " & Err.Number & " ." & Err.Description, vbCritical + vbOKOnly, "Error de Datos"
 Resume Exit_Funcion
End Function




    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)