Aperçu des documents dans le formulaire Microsoft Access
Portée du projet
Nous avons récemment ajouté un centre de documentation à un projet qui permet aux utilisateurs de joindre des documents tels que pdf, word, txt et images à un projet. De plus, ils disposeront d'un processus automatique configuré pour lire les e-mails entrants et enregistrer les pièces jointes des e-mails sur un lecteur réseau. L'objectif est de permettre à l'utilisateur de visualiser les nouveaux documents qui ont été reçus et de les enregistrer au bon endroit. Bien sûr, nous gérerons le processus d'extraction d'informations telles que le sujet et l'origine du document pour permettre à l'utilisateur de comprendre les informations générales du document et cela sera enregistré dans un tableau. De plus, l'utilisateur doit pouvoir visualiser le document pour lire son contenu.
Solution
Nous pouvons bien sûr lancer d'autres applications depuis l'accès pour afficher des documents Word dans Word et pdf dans Adobe Acrobat, etc. Cependant, lorsqu'un utilisateur n'a qu'un seul écran pour travailler, cela signifie passer d'une application à une autre et s'il existe plusieurs types de documents, alors de bien sûr, cela signifie ouvrir plusieurs applications. Nous avons donc fourni une solution simple qui lancerait le document dans un nouveau formulaire d'accès avec une disposition en onglets permettant à l'utilisateur de gérer facilement le système. Dans l'exemple ci-dessous, j'utilise un code qui lira le fichier à partir d'un chemin donné, auquel l'utilisateur aura besoin d'accéder sur son ordinateur. Alternativement, si le document est enregistré dans une table SQL, nous pouvons modifier le code pour enregistrer temporairement le document sur un lecteur local et lancer le fichier à partir de l'emplacement temporaire. Si vous utilisez cette méthode, vous souhaiterez également inclure un code supplémentaire pour supprimer le fichier temporaire après avoir affiché/fermé le formulaire.
Exemple de formulaire
L'exemple de formulaire fourni doit être lancé en passant le chemin du document dans OpenArgs
DoCmd.OpenForm "frmDocumentReview", OpenArgs:= Me.DocumentPath
Le code de chargement vérifie que le chemin a été transmis et également si le fichier existe. Si tout va bien, le processus se poursuit.
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
Enfin, le code charge le document. Le sous Showdocument prend en charge les différents types de documents. La plupart des types de documents utilisent la casse else. Le formulaire lui-même a une zone de texte masquée appelée txtPath qui stocke la valeur de OpenArgs (nom de fichier et chemin), il peut s'agir d'un lecteur mappé ou d'un UNC. L'objet du navigateur Web stocke =[txtPath] comme source de contrôle. Cependant, les documents Word ne fonctionnent pas de la même manière et vous devez d'abord enregistrer le document au format HTML. J'ai utilisé une méthode écrite à l'origine par Crystal Long et j'ai apporté quelques modifications mineures.
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