IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Comment savoir si Acrobat reader est ouvert et comment le refermer, depuis le VBA d'access [AC-2013]


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Points : 54
    Points
    54
    Par défaut Comment savoir si Acrobat reader est ouvert et comment le refermer, depuis le VBA d'access
    Bonjour à tous,

    J'ai rédigé une aide volumineuse (150 pages) pour la BDD d'une association. Elle est au format pdf.

    Avec un bouton sur chaque formulaire de la BDD, j'accède à la page de l'aide concernant le formulaire, en lançant Acrobat suivi du nom de fichier (ma doc) et du N° de page.
    Ça marche très bien sauf si Acrobat est déjà ouvert au moment où je veux ouvrir ma page ! Il s'affiche sur le doc et à la page où il était.

    Je voudrais donc pouvoir, avant de lancer acrobat, tester avec VBA s'il est déjà actif et le cas échéant le fermer

    A tout hasard, voici le code que j'utilise.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    ' je vérifie que j'ai bien en mémoire le chemin vers acrobat sinon je le charge
    If IsNull(cheminacrobat) Or cheminacrobat = "" Then dummy = get_chemins()
    ' je vérifie que j'ai bien le nom du répertoire de documentation, sinon je le charge
    If IsNull(r_documentation) Or r_documentation = "" Then dummy = maj_noms_répertoires()
     
        Set WshShell = CreateObject("WScript.Shell")
         Set PDFExec = WshShell.Exec(cheminacrobat & " /a page=" & numpage & "=OpenActions " & r_documentation & nomfichier)
     
        Set PDFExec = Nothing
        Set WshShell = Nothing
    Merci d'avance de votre aide

  2. #2
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Points : 54
    Points
    54
    Par défaut A l'aide !
    Bonjour à tous !

    C'est moi qui ai ouvert cette discussion et je suis bien malheureux car je n'ai eu aucune réponse ou piste de réponse en 2 mois...

    Peut être devrais-je transférer cette discussion dans un autre chapitre du site ?

    quelqu'un a t'il des idées ?

    merci d'avance

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, "c'est du brutal". A appeler en tête de procédure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub KillReader()
    Dim RetVal As Long
        RetVal = Shell("Taskkill /im AcroRd32.exe /f", 0)
    End Sub
    Sinon tu peux voir aussi ici, il faudra extraire les procédures,déclarations API et autres.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2011
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2011
    Messages : 75
    Points : 54
    Points
    54
    Par défaut Génial ! Cela marche!
    Merci kiki29, tu m'enlèves une belle épine du pied.

    Comme tu le dis, c'est un peu brutal mais cela marche et me suffit parfaitement.

    il a juste fallu que je marque une pause de 2" entre l'invocation de "killreader" et l'ouverture (ou la réouverture) d'un fichier .pdf, faute de quoi Acrored32.exe ne se lançait pas. Cela ralentit un peu la consultation de l'aide par l'utilisateur... mais quand il cherche de l'aide, il peut bien patienter un petit peu. Ve vais vérifier sur les autres machines de l'association que cette durée de pause convent aussi.

    J'ai lu un petit peu sur la commande taskkill que je ne connaissais pas. En fait, Dos c'est un peu loin pour moi !

    Sans abuser de ton temps, peux tu me dire à quoi correspond ",0 " ) à la fin de la commande shell, histoire de bien comprendre ce qui se passe.

    En tous cas, un très grand merci.

  5. #5
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, pour Taskkill
    pour Shell :
    Style
    Facultatif. AppWinStyle. Valeur choisie à partir du AppWinStyle, énumération spécifiant le style de la fenêtre dans laquelle le programme doit être exécuté. Si Style est omis, Shell utilise AppWinStyle.MinimizedFocus qui démarre le programme réduit et avec un focus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment savoir si une form est ouverte (créé)?
    Par UnSofteuxAmateur dans le forum Delphi
    Réponses: 1
    Dernier message: 30/09/2006, 11h24
  2. Comment savoir si mon navigateur est ouvert ?
    Par Chris33 dans le forum Réseau/Web
    Réponses: 8
    Dernier message: 18/07/2006, 14h51
  3. [Swing] comment savoir si une fenetre est ouverte ?
    Par uraxyd dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/12/2005, 11h55
  4. [Excel] comment savoir si une feuille est ouverte ?
    Par scully2501 dans le forum Access
    Réponses: 11
    Dernier message: 07/10/2005, 15h02
  5. Unix - Comment savoir si un fichier est ouvert
    Par freddyboy dans le forum C
    Réponses: 7
    Dernier message: 06/10/2004, 15h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo