Access
 sql >> Datenbank >  >> RDS >> Access

Vorschau von Dokumenten im Microsoft Access-Formular

Vorschau von Dokumenten im Microsoft Access-Formular

Projektumfang

Wir haben kürzlich einem Projekt ein Dokumentenzentrum hinzugefügt, das es Benutzern ermöglicht, Dokumente wie PDF, Word, TXT und Bilder an ein Projekt anzuhängen. Darüber hinaus wird ein automatischer Prozess eingerichtet, um eingehende E-Mails zu lesen und die E-Mail-Anhänge auf einem Netzlaufwerk zu speichern. Ziel ist es, dem Benutzer zu ermöglichen, neu empfangene Dokumente anzuzeigen und am richtigen Ort zu speichern. Natürlich werden wir den Prozess verwalten, um Informationen wie Betreff und Herkunft des Dokuments zu extrahieren, damit der Benutzer die allgemeinen Informationen des Dokuments verstehen kann, und diese werden in einer Tabelle gespeichert. Außerdem muss der Benutzer in der Lage sein, das Dokument anzuzeigen, um seinen Inhalt zu lesen.

Lösung

Wir können natürlich andere Anwendungen von Access starten, um Word-Dokumente in Word und PDF in Adobe Acrobat usw. anzuzeigen. Wenn ein Benutzer jedoch nur einen Bildschirm zum Arbeiten hat, bedeutet dies, von einer Anwendung zur anderen zu wechseln, und wenn es mehrere Dokumenttypen gibt, dann von Dies bedeutet natürlich, mehrere Anwendungen zu öffnen. Wir haben daher eine einfache Lösung bereitgestellt, die das Dokument in einem neuen Zugriffsformular mit Registerkartenlayout startet, das es dem Benutzer ermöglicht, das System einfach zu verwalten. Im folgenden Beispiel verwende ich Code, der die Datei aus einem bestimmten Pfad liest, auf den der Benutzer auf seinem Computer zugreifen muss. Wenn das Dokument in einer SQL-Tabelle gespeichert wird, können wir alternativ den Code ändern, um das Dokument vorübergehend auf einem lokalen Laufwerk zu speichern und die Datei vom temporären Speicherort aus zu starten. Wenn Sie diese Methode verwenden, sollten Sie auch zusätzlichen Code einfügen, um die temporäre Datei nach dem Anzeigen/Schließen des Formulars zu löschen.

Musterformular

Das bereitgestellte Beispielformular sollte gestartet werden, indem der Dokumentpfad in OpenArgs übergeben wird

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

Der Code beim Laden überprüft, ob der Pfad übergeben wurde und ob die Datei vorhanden ist. Wenn alles gut ist, wird der Prozess fortgesetzt.

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

Schließlich lädt der Code das Dokument. Das Showdocument-Sub kümmert sich um die verschiedenen Dokumenttypen. Die meisten Dokumenttypen verwenden den Else-Fall. Das Formular selbst hat ein verstecktes Textfeld namens txtPath die den Wert der OpenArgs (Dateiname und Pfad) speichert, kann dies entweder ein zugeordnetes Laufwerk oder UNC sein. Das Webbrowser-Objekt speichert =[txtPath] als Steuerquelle. Word-Dokumente funktionieren jedoch nicht auf die gleiche Weise, und Sie müssen das Dokument zuerst als HTML speichern. Ich habe eine ursprünglich von Crystal Long geschriebene Methode verwendet und einige kleinere Änderungen vorgenommen.

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