Vista previa de documentos en formulario de Microsoft Access
Alcance del proyecto
Recientemente agregamos un centro de documentos a un proyecto que permite a los usuarios adjuntar documentos como pdf, word, txt e imágenes a un proyecto. Además, tendrán un proceso automático configurado para leer los correos electrónicos entrantes y guardar los archivos adjuntos de correo electrónico en una unidad de red. El objetivo es permitir al usuario ver los nuevos documentos que se han recibido y guardarlos en la ubicación correcta. Por supuesto, administraremos el proceso para extraer información como el tema y de quién proviene el documento para permitir que el usuario comprenda la información general del documento y esto se guardará en una tabla. Además, el usuario debe poder ver el documento para leer su contenido.
Solución
Por supuesto, podemos iniciar otras aplicaciones desde el acceso para ver documentos de Word en Word y PDF en Adobe Acrobat, etc. Sin embargo, cuando un usuario solo tiene una pantalla para trabajar, esto significa cambiar de una aplicación a otra y si hay varios tipos de documentos, entonces de Por supuesto, esto significa abrir varias aplicaciones. Por lo tanto, brindamos una solución simple que lanzaría el documento en un nuevo formulario de acceso con diseño de pestañas que le permite al usuario administrar fácilmente el sistema. En el siguiente ejemplo, estoy usando un código que leerá el archivo desde una ruta determinada, a la que el usuario necesitará acceder en su computadora. Alternativamente, si el documento se guarda en una tabla SQL, podemos modificar el código para guardar temporalmente el documento en una unidad local y ejecutar el archivo desde la ubicación temporal. Si usa este método, también querrá incluir un código adicional para eliminar el archivo temporal después de ver/cerrar el formulario.
Formulario de muestra
El formulario de muestra proporcionado debe iniciarse pasando la ruta del documento en OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
El código de carga verifica que se pasó la ruta y también si el archivo existe. Si todo está bien, el proceso continúa.
Private Sub Form_Load() If IsNull(Me.OpenArgs) Then MsgBox "No document to show", , "Path not specified" Exit Sub Else If Not FSO.FileExists(Me.OpenArgs) Then MsgBox "Your computer does not have access to the named file. You need to download the file to view it." Exit Sub Else Showdocument OpenArgs End If End If End Sub
Finalmente el código carga el documento. El sub Showdocument se encarga de los diferentes tipos de documentos. La mayoría de los tipos de documentos utilizan el caso else. El formulario en sí tiene un cuadro de texto oculto llamado txtPath que almacena el valor de OpenArgs (nombre de archivo y ruta), puede ser una unidad asignada o UNC. El objeto del navegador web almacena =[txtPath] como fuente de control. Sin embargo, los documentos de Word no funcionan de la misma manera y primero debe guardar el documento como html. Usé un método escrito originalmente por Crystal Long e hice algunos cambios menores.
Private Sub Showdocument(strPath As String) Dim strExt As String Dim sPathFileHTML As String Dim oWordApp As Object Dim oDoc As Object strExt = GetFileExt(strPath) Select Case strExt Case "docx" 'save word doc as HTML sPathFileHTML = CurrentProject.Path & "\temp.html" Set oWordApp = CreateObject("Word.Application") Set oDoc = oWordApp.Documents.Open(strPath) oDoc.SaveAs2 FileName:=sPathFileHTML, FileFormat:=8 'wdFormatHTML oDoc.Close False oWordApp.Quit Set oDoc = Nothing Set oWordApp = Nothing Case Else sPathFileHTML = strPath End Select 'open in browser control Me.txtPath.Value = sPathFileHTML End Sub