Access
 sql >> Database >  >> RDS >> Access

Visualizza in anteprima i documenti nel modulo di Microsoft Access

Anteprima dei documenti nel modulo di Microsoft Access

Ambito del progetto

Di recente abbiamo aggiunto un centro documenti a un progetto che consente agli utenti di allegare documenti come pdf, word, txt e immagini a un progetto. Inoltre avranno un processo automatico impostato per leggere le e-mail in arrivo e salvare gli allegati e-mail su un'unità di rete. L'obiettivo è consentire all'utente di visualizzare i nuovi documenti ricevuti e salvarli nella posizione corretta. Ovviamente gestiremo il processo per estrarre informazioni come l'oggetto e da chi proviene il documento per consentire all'utente di comprendere le informazioni generali del documento e queste verranno salvate in una tabella. Inoltre l'utente deve poter visualizzare il documento per leggerne il contenuto.

Soluzione

Ovviamente possiamo avviare altre applicazioni dall'accesso per visualizzare i documenti di Word in Word e pdf in Adobe Acrobat ecc. Tuttavia, quando un utente ha solo uno schermo con cui lavorare, questo significa passare da un'applicazione all'altra e se ci sono più tipi di documenti allora di ovviamente questo significa aprire più applicazioni. Abbiamo quindi fornito una soluzione semplice che avrebbe avviato il documento in un nuovo modulo di accesso con layout a schede che consentisse all'utente di gestire facilmente il sistema. Nell'esempio seguente sto usando il codice che leggerà il file da un determinato percorso, a cui l'utente dovrà accedere sul proprio computer. In alternativa, se il documento viene salvato in una tabella SQL, possiamo modificare il codice per salvare temporaneamente il documento su un'unità locale e avviare il file dalla posizione temporanea. Se utilizzi questo metodo, vorresti anche includere un codice aggiuntivo per eliminare il file temporaneo dopo aver visualizzato/chiuso il modulo.

Esempio di modulo

Il modulo di esempio fornito dovrebbe essere lanciato passando il percorso del documento in OpenArgs

DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath

Il codice di caricamento verifica che il percorso sia stato passato e anche se il file esiste. Se tutto va bene, il 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

Infine il codice carica il documento. Il sub Showdocument si occupa dei diversi tipi di documento. La maggior parte dei tipi di documenti utilizza il caso else. Il modulo stesso ha una casella di testo nascosta chiamata txtPath che memorizza il valore di OpenArgs (nome file e percorso) può essere un'unità mappata o UNC. L'oggetto browser web memorizza =[txtPath] come fonte di controllo. Tuttavia, i documenti Word non funzionano allo stesso modo e devi prima salvare il documento come html. Ho usato un metodo originariamente scritto da Crystal Long e ho apportato alcune modifiche minori.

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