Affichage d'un Word ou d'un PDF à partir d'un bouton (de commande ?) sous Access
dfarnier
Messages postés1Date d'inscriptionlundi 29 octobre 2007StatutMembreDernière intervention20 mars 2009
-
20 mars 2009 à 10:31
falstuff
Messages postés40Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention26 avril 2012
-
21 mars 2009 à 00:14
Bonjour,
Je travaille sur Access 2003 sous XP.
J'ai créé une base d'environ 1500 produits.
Les fabriquants nous envoient des descriptifs techniques sous format Word (je les convertie en 2003) et PDF
Je souhaite pouvoir afficher ces descriptifs techniques en un simple clic, c'est à dire ouvrir le fichier sous Word ou Acrobat.
Je ne souhaite pas les intégrer pour des problèmes de mises à jour régulières de ces fiches
Les descriptifs techniques sont tous enregistrés sous le même type de référence (même longueur de chiffres/lettres) dans la même directory G:\Produits\descriptifs.
Cette référence est aussi la clef unique de la base, sans doublon possible...
La base est sur la directory G:\Produits
La base est consultable sur un réseau à partire de plusieurs postes qui possèdent un runtime
J'ai cherché dans toutes les questions posées sur le forum, mais n'ai pas pu trouver comment faire...
Si quelqu'un peut m'apporter la solution, je le remercie d'avance.
Précision : je ne suis pas un pro de la programmation, mes cours remontent au Basic il y a presque 30 ans...
Enfin, un grand merci à tous ceux qui s'impliquent à aider les autres
L'intelligence est la chose la mieux partagée au monde : Tout le monde pense en avoir assez, voir plus que les autres....
A voir également:
Affichage d'un Word ou d'un PDF à partir d'un bouton (de commande ?) sous Access
falstuff
Messages postés40Date d'inscriptionjeudi 23 septembre 2004StatutMembreDernière intervention26 avril 20122 21 mars 2009 à 00:14
Bonjour,
Ci joint le code que j'utilise pour ouvrir n'importe quel type de fichier (PDF, Word, ect...). du moment ou un logiciel adéquat est installé sur le poste.
Dans Access, crée un module et coller le code ci dessous :
Public Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" (ByVal lpFile As String, _
ByVal lpDirectory As String, _
ByVal lpResult As String) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Public Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, _
ByVal dwMilliseconds As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Const SYNCHRONIZE = &H100000
Public Const INFINITE = &HFFFFFFFF
Public Function OuvrirFichier(Fichier As String, Optional attenteFermeture As Boolean = False) As Boolean
Dim fileappli As String * 250
Dim result As Integer
Dim temp As String
Dim fichAOuvrir As String
Dim i As Integer
Dim pid As Double
Dim phnd As Long
'On Error GoTo OuvrirFichier_Error
temp = Dir$(Fichier) 'recherche si le fichier existe
If temp <> "" Then
' Le fichier existe
' Recherche l'exécutable associé
result = FindExecutable(Fichier, vbNullString, fileappli)
If result > 32 Then
' Association trouvée
i = InStr(1, fileappli, Chr(0), vbBinaryCompare) - 1
If fileappli = "C:\WINDOWS\System32\shimgvw.dll" Then
fichAOuvrir = "rundll32.exe C:\WINDOWS\System32\shimgvw.dll,ImageView_Fullscreen " & Fichier
Else
fichAOuvrir = """" & Left$(fileappli, i) & """ """ & Fichier & """"""
'fichAOuvrir = """" & Left$(fileappli, i) & """ " & fichier
End If
Else
' Aucune association de trouvée
OuvrirFichier = False
Exit Function
End If
Else
' Le fichier n'existe pas
OuvrirFichier = False
Exit Function
End If
'MsgBox fichAOuvrir
' Ouverture du fichier
pid = Shell("" & fichAOuvrir & "", vbMaximizedFocus)
If pid <> 0 Then
' Si attente fermeture demandé, on suspend le process jusqu'à que le logiciel soit fermé.
If attenteFermeture = True Then
phnd = OpenProcess(SYNCHRONIZE, 0, pid)
If phnd <> 0 Then
Call WaitForSingleObject(phnd, INFINITE)
Call CloseHandle(phnd)
End If
End If
OuvrirFichier = True
Else
OuvrirFichier = False
End If
End Function
----------------------------------------------------------------------
Pour l'utilisation de ce code, il suffit plus que sur clic d'un bouton dans un formulaire (ou autre evenement) de lancer la fonction suivant :