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