Access
 sql >> Base de Dados >  >> RDS >> Access

Visualizar documentos no formulário do Microsoft Access

Visualizar documentos no formulário do Microsoft Access

Escopo do Projeto


Recentemente, adicionamos um centro de documentos a um projeto que permite aos usuários anexar documentos como pdf, word, txt e imagens a um projeto. Além disso, eles terão um processo automático configurado para ler e-mails recebidos e salvar os anexos de e-mail em uma unidade de rede. O objetivo é permitir que o usuário visualize os novos documentos recebidos e salve-os no local correto. Claro que gerenciaremos o processo para extrair informações como assunto e de quem veio o documento para permitir que o usuário entenda as informações gerais do documento e isso será salvo em uma tabela. Além disso, o usuário precisa ser capaz de visualizar o documento para ler seu conteúdo.

Solução


É claro que podemos iniciar outros aplicativos a partir do acesso para visualizar documentos do Word no Word e pdf no Adobe Acrobat etc.  No entanto, quando um usuário tem apenas uma tela para trabalhar, isso significa alternar de um aplicativo para outro e, se houver vários tipos de documentos, então de claro que isso significa abrir vários aplicativos. Por isso, fornecemos uma solução simples que lançaria o documento em um novo formulário de acesso com layout de guias, permitindo ao usuário gerenciar facilmente o sistema. No exemplo abaixo, estou usando um código que lerá o arquivo de um determinado caminho, ao qual o usuário precisará acessar em seu computador. Como alternativa, se o documento for salvo em uma tabela SQL, podemos modificar o código para salvar temporariamente o documento em uma unidade local e iniciar o arquivo a partir do local temporário. Se você usar esse método, também desejará incluir código adicional para excluir o arquivo temporário após visualizar/fechar o formulário.

Formulário de Amostra

O formulário de amostra fornecido deve ser iniciado passando o caminho do documento no OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath

O código ao carregar verifica se o caminho foi passado e também se o arquivo existe. Se tudo estiver bem, o processo continua.
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, o código carrega o documento. O sub Showdocument cuida dos diferentes tipos de documentos. A maioria dos tipos de documento usa o caso else. O próprio formulário tem uma caixa de texto oculta chamada txtPath que armazena o valor do OpenArgs (nome do arquivo e caminho) pode ser uma unidade mapeada ou UNC. O objeto do navegador da web armazena =[txtPath] como fonte de controle. No entanto, os documentos do Word não funcionam da mesma forma, e primeiro você precisa salvar o documento como html. Eu usei um método originalmente escrito por Crystal Long e fiz algumas pequenas alterações.
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