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.NET Discussion :

VB.NET automation de winword 2013/2016


Sujet :

VB.NET

  1. #1
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut VB.NET automation de winword 2013/2016
    Bonjour a tous

    Dans mon petit programme, je remplace des bookmark par des valeurs.
    le document s'affiche bien avec Word, valeurs en places.
    Lorsque je ferme Word il me demande si je veux enregistrer mon doc, je lui dis NON
    MAIS quand je vais voir dans les Process/Task, je vois que Winword.exe apparait le nombre de fois que j'ai lancé ma procédure pour remplir le doc Word.
    Y a t'il une raison a cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     Dim wdApp As New Word.Application()
     
      wdApp = CreateObject("Word.Application")
     
      With wdApp
     .Documents.Add(_PathTemplates & "\MonDoc.docx")
     .ActiveDocument.Bookmarks("MonBookMark").Range.Text = "Mes données"
    ...
    ...
    ...
     .Visible = True
    End With
    La Connaissance est comme la joie elle s'accroît en la partageant!

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Chaque fois que tu appelles CreateObject, tu lances automatiquement une nouvelle instance de l'application. Pour fermer l'instance ouverte de Word en terminant ton programme, tu as besoin de:

    après que tu aies fait ce que tu voulais faire avec Word. Habituellement, juste avant le End Sub, cela va bien. Pense aussi à l'utiliser avant un Exit Sub.

    Théoriquement, une passe similaire serait suffisante pour Excel, mais Excel est trop tête de cochon pour obéir à si peu.

    Si tu es sûr que tu as une instance de Word en fonction, tu peux l'utiliser au lieu d'en créer une autre:

    Remplace ta ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdApp = CreateObject("Word.Application")

    par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wdApp = GetObject(,"Word.Application")
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Membre confirmé Avatar de thierry007
    Homme Profil pro
    Autodidacte
    Inscrit en
    Août 2006
    Messages
    876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Autodidacte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2006
    Messages : 876
    Points : 457
    Points
    457
    Par défaut
    Bonjour clementmarcotte

    Merci de ta participation

    Quand je place le wdapp.quit juste avant le end sub, word demande s'il faut sauver le document, hors je souhaite encore pouvoir le modifier avant impression

    serait-il possible de tester si Word serait déjà ouvert?
    La Connaissance est comme la joie elle s'accroît en la partageant!

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Là, mon VS est en panne royale, mais, la classe Process du Framework permet de repérer et de gérer les processus.

    Ceci dit, il y a moyen de fermer Word sans qu'il pose la question.

    C'est l'exemple en VBA, qu'il faut adapter à VB.net, mais l'idée de base est là:

    Exemple


    Cet exemple montre comment fermer Word et inviter l'utilisateur à enregistrer tous les documents modifiés depuis le dernier enregistrement.

    Visual Basic pour Applications
    Application.Quit SaveChanges:=wdPromptToSaveChanges
    les constantes possibles, et leur valeur numérique sont :

    wdDoNotSaveChanges = 0
    wdPromptToSaveChanges = -2
    wdSaveChanges = -1

    En principe automation ne permet pas de transférer le nom des constantes, mais juste les valeurs numériques. Si tu veux "tricher" et absolument utiliser les noms des constantes, tu peux les "recréer" avec Const, ou dans une énumération.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

Discussions similaires

  1. Réponses: 1
    Dernier message: 24/08/2006, 19h21
  2. Réponses: 3
    Dernier message: 24/07/2006, 15h54
  3. Réponses: 2
    Dernier message: 06/06/2006, 13h09
  4. [VB.NET][Automation Word]utiliser un document word comme un report
    Par kinganasius dans le forum Windows Forms
    Réponses: 10
    Dernier message: 01/06/2006, 12h38
  5. [VB.NET]automation MSword 2003
    Par kinganasius dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/05/2006, 14h51

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