Podgląd dokumentów w formularzu Microsoft Access
Zakres projektu
Niedawno dodaliśmy do projektu centrum dokumentów, które pozwala użytkownikom dołączać do projektu dokumenty, takie jak pdf, word, txt i obrazy. Ponadto będą mieli automatyczny proces skonfigurowany do odczytywania przychodzących wiadomości e-mail i zapisywania załączników do wiadomości e-mail na dysku sieciowym. Celem jest umożliwienie użytkownikowi przeglądania nowych otrzymanych dokumentów i zapisywania ich we właściwej lokalizacji. Oczywiście będziemy zarządzać procesem, aby wyodrębnić informacje, takie jak temat i od kogo pochodzi dokument, aby umożliwić użytkownikowi zrozumienie ogólnych informacji o dokumencie, a te zostaną zapisane w tabeli. Ponadto użytkownik musi mieć możliwość przeglądania dokumentu, aby przeczytać jego zawartość.
Rozwiązanie
Możemy oczywiście uruchomić inne aplikacje z dostępem do przeglądania dokumentów Word w programie Word i pdf w programie Adobe Acrobat itp. Jednak gdy użytkownik ma tylko jeden ekran do pracy, oznacza to przejście z jednej aplikacji do drugiej, a jeśli istnieje wiele typów dokumentów, wówczas Oczywiście oznacza to otwieranie wielu aplikacji. Dlatego udostępniliśmy proste rozwiązanie, które uruchamiałoby dokument w nowej formie dostępowej z układem zakładek pozwalającym użytkownikowi na łatwe zarządzanie systemem. W poniższym przykładzie używam kodu, który odczyta plik z podanej ścieżki, do którego użytkownik będzie potrzebował dostępu na swoim komputerze. Alternatywnie, jeśli dokument jest zapisany do tabeli SQL, możemy zmodyfikować kod, aby tymczasowo zapisać dokument na dysku lokalnym i uruchomić plik z lokalizacji tymczasowej. Jeśli używasz tej metody, chciałbyś również dołączyć dodatkowy kod, aby usunąć plik tymczasowy po wyświetleniu/zamknięciu formularza.
Przykładowy formularz
Dostarczony przykładowy formularz należy uruchomić ze ścieżką dokumentu w OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
Kod podczas ładowania weryfikuje, czy ścieżka została przekazana, a także czy plik istnieje. Jeśli wszystko jest w porządku, proces jest kontynuowany.
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
Wreszcie kod ładuje dokument. Podrzędna Showdocument zajmuje się różnymi typami dokumentów. Większość typów dokumentów używa litery else. Sam formularz ma ukryte pole tekstowe o nazwie txtPath który przechowuje wartość OpenArgs (nazwa pliku i ścieżka), może to być zmapowany dysk lub UNC. Obiekt przeglądarki internetowej przechowuje =[txtPath] jako źródło sterowania. Jednak dokumenty Word nie działają tak samo i najpierw musisz zapisać dokument jako html. Użyłem metody napisanej przez Crystal Long i wprowadziłem kilka drobnych zmian.
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