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