Náhled dokumentů ve formuláři Microsoft Access
Rozsah projektu
Nedávno jsme do projektu přidali centrum dokumentů, které uživatelům umožňuje připojovat k projektu dokumenty jako pdf, word, txt a obrázky. Navíc budou mít nastavený automatický proces pro čtení příchozích e-mailů a ukládání e-mailových příloh na síťový disk. Cílem je umožnit uživateli zobrazit nové dokumenty, které byly přijaty, a uložit je na správné místo. Samozřejmě budeme řídit proces extrahování informací, jako je předmět a kdo dokument pochází, aby uživatel porozuměl obecným informacím o dokumentu a ty budou uloženy do tabulky. Kromě toho musí mít uživatel možnost dokument prohlížet, aby si mohl přečíst jeho obsah.
Řešení
Můžeme samozřejmě spouštět další aplikace z přístupu k prohlížení dokumentů Word ve Wordu a pdf v Adobe Acrobat atd. Pokud má však uživatel k dispozici pouze jednu obrazovku, znamená to přepínání z jedné aplikace do druhé a pokud existuje více typů dokumentů, pak to samozřejmě znamená otevření více aplikací. Poskytli jsme proto jednoduché řešení, které by spustilo dokument v nové přístupové podobě s rozložením karet, které uživateli umožní snadnou správu systému. V níže uvedeném příkladu používám kód, který načte soubor z dané cesty, ke které bude uživatel potřebovat přístup na svém počítači. Alternativně, pokud je dokument uložen do tabulky SQL, můžeme upravit kód tak, aby se dokument dočasně uložil na místní disk a spustil soubor z dočasného umístění. Pokud použijete tuto metodu, budete také chtít zahrnout další kód pro smazání dočasného souboru po zobrazení/zavření formuláře.
Vzorový formulář
Poskytnutý vzorový formulář by měl být spuštěn předáním cesty k dokumentu v OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
Kód při načtení ověří, že byla předána cesta a také, zda soubor existuje. Pokud je vše v pořádku, proces pokračuje.
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 Nakonec kód načte dokument. Položka Showdocument se stará o různé typy dokumentů. Většina typů dokumentů používá případ else. Samotný formulář má skryté textové pole s názvem txtPath který ukládá hodnotu OpenArgs (název souboru a cestu), může to být buď namapovaná jednotka nebo UNC. Objekt webového prohlížeče ukládá =[txtPath] jako zdroj ovládání. Dokumenty aplikace Word však nefungují stejně a nejprve musíte dokument uložit jako html. Použil jsem metodu původně napsanou Crystal Long a provedl jsem několik drobných změn.
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