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 :

Problème automatisation Word


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mars 2011
    Messages : 1
    Par défaut Problème automatisation Word
    Chers amis,

    C'est un problème sans doute tout bête, mais je cale...

    Voilà, je dois remplir des fichiers Word avec 9 informations différentes. Il y a 40 fichiers Word à remplir, avec ces 9 informations.

    J'ai réussi à automatiser ceci avec une boucle for de 1 à 40. Dans cette boucle for, j'appelle ma function 9 fois, avec un paramètre qui varie.

    Ca fonctionne très bien, mais il y a un grand problème: c'est extraordinairement lent. Je sais pourquoi: à l'intérieur de ma function, je créé chaque fois l'objet Word, j'ouvre chaque fois le fichier, j'écris les informations, et je le ferme... Donc il y a 40x9 créations d'une instance objet word, sauvegarde du fichier, etc... bref la catastrophe

    la solution, évidement, serait de n'ouvrir qu'une seule fois (et pas 9) les 40 fichiers, et ensuite d'injecter à la suite les 9 informations, puis de sauvegarder.

    Le problème, c'est que si j'instancie l'objet word dans ma boucle for, cela pose problème dans la function, car cette instanciation ne vaut que pour le sub dans laquelle elle est.

    Comment faire ? Comme faire en sorte que je puisse ouvrir mon fichier word, qu'il reste ouvert lorsque j'appelle ma function, et que je puisse le fermer, une fois ma function terminée ?

    Je joins le principe de mon code actuel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To 40
                ecriture(i)
    next
     
    function ecriture
                WordObj = CreateObject("word.application")
                ' ecriture dans le fichier word
                ' etc... 
                WordObj = Nothing
    end function
    merci d'avance pour votre aide !

  2. #2
    Membre expérimenté Avatar de anonymousse
    Profil pro
    Inscrit en
    Février 2011
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 130
    Par défaut
    bonsoir,

    il faut à mon avis que tu sortes WordObj = CreateObject("word.application")
    de ta function

    vérifies si la syntaxe est bien .Document ci-après, voir Pages, Page ... (?)

    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
     
       Dim appWord As new Word.Application = CreateObject("Word.Application")
     
    For i = 1 To 40
                ecriture(i)
    next
     
    function ecriture
                Dim docWord As new Word.Document = appWord.Documents.Open("Chemin") 'ouvrir le fichier doc
     
                ' ecriture dans le fichier word
                ' etc... 
     
                docWord.Save ' ou SaveAs ("NouveauChemin") si nécessaire
                docWord.Close
    end function

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 198
    Par défaut
    tu peux passer un paramètre à ta fonction (l'application ou le fichier) et sortir la création de l'objet de la fonction pour le mettre avant l'appel


    au passage mettre une variable de méthode à nothing ne sert à rien
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

Discussions similaires

  1. Problème highlight word
    Par olk2r dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 06/09/2006, 15h26
  2. [Système] probléme PHP Word
    Par hamzito dans le forum Langage
    Réponses: 7
    Dernier message: 31/07/2006, 13h32
  3. [COM] Problème lié word
    Par mosca_coroneja dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 23/03/2006, 11h35
  4. Automatiser WORD
    Par mister3957 dans le forum VBA Word
    Réponses: 2
    Dernier message: 03/01/2006, 18h38
  5. Probléme VBA Word et SQL server
    Par andrau dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/10/2005, 11h52

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