Bonjour,

Je dois ouvrir un fichier pdf par du code vba (sous excel ici).
Ce document est protégé par mot de passe donc une fois acrobat reader lancé, il demande la saisi du mot de passe avant d'ouvrir le document (logique).

Au début j'ai utilisé la fonction ShellExecute pour ouvrir le fichier pdf comment ça je ne suis pas obligé de spécifier le nom de l'exe à utiliser pour ouvrir le fichier pdf :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
RetVal = ShellExecute(hwnd, "Open", s_FileMenuNameFound, "", 0&, SW_Normal)
Mais finalement, j'ai abandonné cette solution car une fois que j'ai ouvert le pdf, il faut que je prenne le focus dessus pour saisir (par code) le mot de passe du document pdf.
Et là j'utilise la ligne de code suivante :
AppActivate (RetVal )
où RetVal est le code retour du ShellExecute précédent. Et ça ne fonctionne pas.


Du coup j'utilise la fonction Shell comme ceci :

s_FileMenuNameFound = chemin du document pdf

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
x = Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRD32.exe " & s_FileMenuNameFound)
 
        'send password
        AppActivate (x)
        Application.SendKeys "mot de passe à saisir", True
        Application.SendKeys "~", True
Ce code fonctionne bien, le mot de passe est bien saisi mais ce qui m'embête c'est de devoir appeler l'exe acrobat avec Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRD32.exe " ...)

ça ne fonctionnera pas si l'utilisateur n'a pas AcroRD32.exe dans c:\program files... mais dans d:\program files par exemple.

Est-ce possible d'utiliser le Shellexecute avec AppActivate ? Si oui comment ?
Ou sinon, comment puis-je faire pour ouvrir le fichier pdf sans spécifier le chemin de l'exe à utiliser ?

Merci d'avance

Boubou_s