Es mejor utilizar algo más automatizado, le preparé este ejemplo.
Adicione este formulario, consta de un campo de texto para recoger el nombre completo del archivo, es decir, carpeta y nombre con su extensión, adicione un botón de comando. Vamos a utilizar una llamada a la API. Después de seleccionar el archivo éste se abre maximizado, como ejemplo acá le dejo unas pruebas de apertura para archivos de Word, Excel, etc.
Este es un documento de Word.
Este es un documento de Excel.
Este es un documento de Publisher
Este es un video en MP4.
CÓDIGO DEL BOTON DEL FORMULARIO
Private Sub btnArchivo_Click()
Me.ctlArchivo = selectArchivo()
If Me.ctlArchivo <> "" Then
Call ExecuteFile(Me.ctlArchivo, "Open")
End If
End Sub
En un módulo adicione este código
Public Const SW_HIDE = 0
Public Const SW_MINIMIZE = 6
Public Const SW_RESTORE = 9
Public Const SW_SHOW = 5
Public Const SW_SHOWMAXIMIZED = 3
Public Const SW_SHOWMINIMIZED = 2
Public Const SW_SHOWMINNOACTIVE = 7
Public Const SW_SHOWNA = 8
Public Const SW_SHOWNOACTIVATE = 4
Public Const SW_SHOWNORMAL = 1
Public Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
(ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
ByVal lpParameters As String, ByVal lpDirectory As String, _
ByVal nShowCmd As Long) As Long
Public Sub ExecuteFile(sFileName As String, sAction As String)
Dim vReturn As Long
'sAction puede ser "Open" o "Print".
If ShellExecute(Access.hWndAccessApp, sAction, sFileName, vbNullString, "", SW_SHOWNORMAL) < 33 Then
DoCmd.Beep
MsgBox "Archivo no encontrado.",vbCritical,"Le informo"
End If
End Sub
Public Function selectArchivo() As String
'Creamos un control de errores
On Error GoTo sol_err
'Declaramos las variables
Dim vFD As Object 'vFD=FileDialog
Dim vRutaIni As String
'Difinimos la ruta inicial
vRutaIni = Application.CurrentProject.Path
'Creamos el objeto FileDialog
Set vFD = Application.FileDialog(msoFileDialogFilePicker)
'Configuramos las características de nuestra ventana de dialogo
With vFD
.Title = "Seleccione el documento"
.ButtonName = "A seleccionado el Archivo"
.InitialView = msoFileDialogViewSmallIcons
.InitialFileName = vRutaIni
.Filters.Add "Todos los archivos", "*.*"
.Filters.Add "Archivos de BBDD", "*.accdb;*.accdt;*.accde"
'Detectamos el boton pulsado por el usuario
If .Show = -1 Then
'Asignamos a la función la carpeta seleccionada, convirtiendola a un valor de tipo String
selectArchivo = CStr(.SelectedItems.Item(1))
Else
'Si se pulsa cancelar avisamos y salimos
MsgBox "Ha cancelado la selección", vbOKCancel Or vbExclamation Or vbMsgBoxSetForeground, "Access"
Exit Function
End If
End With
Salida:
Exit Function
sol_err:
MsgBox "Se ha producido un error: " & Err.Number & " - " & Err.Description
Resume Salida
End Function
Para la función SelectArchivo() requiere que haga referencia a la librería "Microsoft Office x.y Object Library". Esto le evita los dolores de cabeza del método FollowHyperlink. Solo lo utilizo para abrir documentos PDF en control Browser. El código lo he probado únicamente en Access de 32 bits.
Si quiere el ejemplo lo puede solilicitar a [email protected] favor en el asunto anotar la consulta.