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

VB 6 et antérieur Discussion :

référence objet et pid lors d'une création d'une application word


Sujet :

VB 6 et antérieur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 29
    Points
    29
    Par défaut référence objet et pid lors d'une création d'une application word
    Bonjour
    je suis "débutant" sous vb6;
    je connais deux méthodes pour ouvrir word :

    meth1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wordObj = CreateObject("Word.Application")
    ça permet d'avoir une ref objet de l'application word ouverte.

    meth2)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      Set objWMIService = GetObject("winmgmts:\\.\root\cimv2:Win32_Process")
      objWMIService.Create pathWordExe, Null, Null, pid
    ça permet d'avoir le pid de l'application word ouverte.

    Question1: y'a t-il un moyen d'avoir une seule méthode qui donne les deux : wordObj et pid ???

    Question2: dans la meth2, que peut on mettre à la place des deux Null ??

    A++
    Mourad

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je ne vois pas bien ce que t'apporteras d'obtenir le Pid de Word.
    Si c'est pour fermer word à volonté, ce n'est pas la bonne méthode. Word est une application multidocuments, Si tu lances Word alors d'il est déjà actif, c'est la première occurence de Word qui se charge d'afficher le document et ton instance est supprimée, donc le pid que tu obtiendras ne corespondra pas au Word actif. S'il n'est pas actif et qu'un utilisateur ouvre un document apres que tu aies lancé ta commande, un kill du Word ne va pas forcément lui plaire.

    Il y a probablement une Faq ou un Tutoriel sur Developez. Fais une recherche sur le site genre : Pilotage Word
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    Merci delbeke pour ta réponse

    ce que tu as dit est vrai , mais ca ne répond pas à mon besoin:

    en fait j'ai une appli qui ouvre word pour faire du publipostage ;
    et des fois ca se passe mal (image corrompu a inserer , ...) et word bloque et ouvre une boite de dialog d'erreur: du coup l'application bloque et il n ya qu'un click manuel pour fermer la boite de dialogue ou un kill du processus word.

    du coup je voulais automatiser la fermeture "forcée" du document en erreur afin de laisser le traitement tourner pour les autres.

    donc mon besoin est d'abord d'ouvrir une nouvelle Application ( nouveau processus) word dans laquelle se font mes publipostages.

    est ce possible ?

    A++
    Mourad

  4. #4
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Essaye de voir si tu peux t'en tirer avec ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    Option Explicit
     
    Dim WithEvents appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
    Dim ExcelClosable As Boolean      'flag mis à false tant que l'on a pas décidé
     
    Private Sub appExcel_WorkbookBeforeClose(ByVal Wb As Excel.Workbook, Cancel As Boolean)
      If Wb Is wbExcel Then
        If Not ExcelClosable Then
          'pas ok , on refuse la fermeture
          Cancel = True
        Else
          'ok on laisse fermer
        End If
      End If
    End Sub
     
    Private Sub FermerDocument()
      ExcelClosable = True
      wbExcel.Close False 'fermeture sans enegistrement
      If appExcel.Workbooks.Count = 0 Then
        appExcel.Quit
      End If
      Set wsExcel = Nothing
      Set wbExcel = Nothing
      Set appExcel = Nothing
    End Sub
    Private Sub OuvreDocument(FileName As String)
      ExcelClosable = False
      Set wbExcel = appExcel.Workbooks.Open(FileName)
      Set wsExcel = wbExcel.Worksheets(1)
    End Sub
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  5. #5
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par mourad.zamoun Voir le message
    .../...
    et word bloque et ouvre une boite de dialog d'erreur: du coup l'application bloque et il n ya qu'un click manuel pour fermer la boite de dialogue ou un kill du processus word.
    .../...
    et avec DisplayAlerts ?

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    merci Delbeke pour ta reponse; mais
    chez moi (vb6), il n y a pas de type Excel.Application ou Word.Application !?

    j'ai trouvé une solution qui permet d'avoir l'objet word qui vient de CreateObject et son pid
    j'attend le resultat des tests pour savoir si c bon

    l'idee est de comparer la date de creation de l'objet via CreateObject et de la comparer avec CreationDate des processus winword.exe en cours: voir win32_class.

    avec ca, on peut trouver le bon pid.

    voila en gros.

    merci encore
    a++
    Mourad

    Citation Envoyé par DarkVader Voir le message
    et avec DisplayAlerts ?
    j'ai utilisé ça mais ça ne fait rien !

    merci qd meme

  7. #7
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par mourad.zamoun Voir le message
    j'ai utilisé ça mais ça ne fait rien !

    merci qd meme
    cela ne dispense pas d'une gestion de traitement des erreurs

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Septembre 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 44
    Points : 29
    Points
    29
    Par défaut
    meme en rajoutant la gesion d'erreur, le Quit ne réussit pas fermer word lorqu'il ya une boite de dialogue deja ouverte.
    c vrai que la je teste avec une boite de dialog qui n'est pas de type erreur, mais juste celle qui permet d'ouvrir un fichier.

Discussions similaires

  1. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  2. Réponses: 0
    Dernier message: 07/04/2010, 19h15
  3. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  4. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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