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