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

JavaScript Discussion :

Piloter Word via JS (OLE Automation)


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut Piloter Word via JS (OLE Automation)
    Bonjour à tous,

    je travaille en ce moment au pilotage de word via JS.
    J'ouvre un doc word (un template qu'il faudra remplir et envoyer au client), puis je réalise plusieurs opérations (notamment rechercher/remplacer) sur le document avant de l'enregistrer et de l'envoyer par mail (le tout automatisé of course).

    Le problème, c'est que j'ai parfois du mal à trouver la syntaxe JS correspondant à une macro word donnée.
    Par exemple trouver comment dans JS reproduire la syntaxe word :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Selection.MoveUp Unit:=wdLine, Count:=3, Extend:=wdExtend
    Ca doit être quelque chose comme MyWord.Selection.MoveUp(Param1,Param2,Param3), mais je ne trouve pas les valeurs à donner aux paramètres. Je suis obligé de tâtonner et je perds beaucoup de temps.

    Connaissez-vous un moyen (site ? règle générale ?) permettant d'avoir facilement l'équivalent JS pour chaque instruction ?

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 658
    Billets dans le blog
    1
    Par défaut
    piloter word depuis js ...
    ça me laisse sans voix ....
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Je t'aurais bien dit d'aller faire un tour sur msdn, mais leur site fait un peu la tête aujourd'hui! Sinon il y a le forum word

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Citation Envoyé par SpaceFrog Voir le message
    piloter word depuis js ...
    ça me laisse sans voix ....
    Pourquoi ca
    S'il y a une autre solution je suis preneur...
    Citation Envoyé par franculo_caoulene Voir le message
    Je t'aurais bien dit d'aller faire un tour sur msdn, mais leur site fait un peu la tête aujourd'hui! Sinon il y a le forum word
    Merci pour le lien msdn Ca précise pas mal de choses, mais je n'y ai pas trouvé la solution de mon problème. Ca décrit bien la fonction et les paramètres, mais ca n'indique pas les différentes valeurs possibles pour ces paramètres en Jscript : /
    Pour le forum word, je veux bien essayer, mais ca me paraissait être plus un problème de JS.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Par défaut
    salut,

    ta syntaxe c'est du VB, pas du JS.

    Par contre, comme t'as suggere spacefrog tu ne peux pas manipuler un fichier word avec un langage comme javascript.
    Il faut que tu utilises un langage qui s'execute cote serveur (java, php, etc) avec une librairie qui te permet de manipuler un fichier word.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Citation Envoyé par jln13 Voir le message
    salut,

    ta syntaxe c'est du VB, pas du JS.

    Par contre, comme t'as suggere spacefrog tu ne peux pas manipuler un fichier word avec un langage comme javascript.
    Il faut que tu utilises un langage qui s'execute cote serveur (java, php, etc) avec une librairie qui te permet de manipuler un fichier word.
    Il y a l'équivalent en JS.
    Je créée un activeX que je manipule, ca fonctionne très bien pour la plupart des fonctions.
    J'ouvre le doc, j'écris, je remplace des valeurs génériques par les valeurs correspondant au client connecté, valeurs que je vais chercher en table, je sauvegarde mon doc (puis il est envoyé par mail) etc...Tout ca fonctionne bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      var word = new ActiveXObject("Word.Application");
      var doc_word = new ActiveXObject("Word.Document");
      doc_word = word.Documents.Open("c:/Temp/MonDoc.doc")
      word.Visible=false;
      word.Application.ActiveDocument.Protect(2, false, "MyPass");
      word.ActiveDocument.Save()
    Par exemple...

    Mais pour toutes les fonctions qui prennent des paramètres de la classe WdUnits, je ne sais pas quelle valeur donner aux paramètres dans JS. Donc je suis incapable d'utiliser ces fonctions pour l'instant.

  7. #7
    Membre Expert Avatar de franculo_caoulene
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 880
    Par défaut
    Citation Envoyé par nox75 Voir le message
    Ca décrit bien la fonction et les paramètres, mais ca n'indique pas les différentes valeurs possibles pour ces paramètres en Jscript : /
    Je n'y connais rien, mais en quoi est-ce dépendant du langage? N'est-ce pas plutôt dépendant de l'objet? D'où l'idée d'aller dans le forum Word plutôt que javascript.
    Enfin, je ne peux pas plus t'aider.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Citation Envoyé par franculo_caoulene Voir le message
    Je n'y connais rien, mais en quoi est-ce dépendant du langage? N'est-ce pas plutôt dépendant de l'objet? D'où l'idée d'aller dans le forum Word plutôt que javascript.
    Enfin, je ne peux pas plus t'aider.
    Merci deja de me donner des pistes
    Le truc c'est que sous word, les paramètres peuvent prendre pour valeurs des objets de la classe WdUnits, donc on peut filer wdColumn, ou wdCharacter etc...en paramètre, par contre dans JS, ces éléments ne sont pas reconnus. Je suppose (j'espère) qu'il y a une syntaxe équivalente, mais je ne la connais pas : / , et je ne suis pas sûr que dans le forum word on se soit déjà intéressé à cette problématique. Mais je vais quand meme aller voir...

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 265
    Par défaut
    ok, ce que je voulais dire indirectement c'est que ton code n'est pas standard et ne fonctionnera que sous IE.

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Citation Envoyé par jln13 Voir le message
    ok, ce que je voulais dire indirectement c'est que ton code n'est pas standard et ne fonctionnera que sous IE.
    EDIT : oups, j'avais mal lu.
    Ca ne fonctionne QUE sous IE, peut etre oui. Mais en fait c'est utilisé dans un logiciel Web qui ne fonctionne de toute facon qu'avec IE. Donc pas de problème à ce niveau là

  11. #11
    Membre Expert Avatar de DoubleU
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 106
    Par défaut
    Je créée un activeX que je manipule, ca fonctionne très bien pour la plupart des fonctions.
    J'ouvre le doc, j'écris, je remplace des valeurs génériques par les valeurs correspondant au client connecté, valeurs que je vais chercher en table, je sauvegarde mon doc (puis il est envoyé par mail) etc...Tout ca fonctionne bien.
    C'est pas très logique ce que tu fais:
    1/ Tu ouvres le fichier sur le client
    2/ Tu vas chercher des valeurs sur le serveur
    3/ Tu les mets dans le fichier sur le client
    4/ Le serveur envoie le fichier par mail

    T'as pas la sensation de faire des aller-retours pour rien? Normalement, ce genre de chose doit se faire sur le serveur en intégralité, ne serait-ce que pour maintenir un certain niveau de sécurité (et oui, qui te dit que l'utilisateur ne va pas modifier ton fichier word ?).

    Comme le dit jln13, tu as plein de façons coté serveur de manipuler ton fichier (api diverses et variées, objets COM) ...

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Je suis d'accord, les flux ne sont pas très optimisés client-serveur. Mais il y a 2 problèmes :
    1 - Le client ne souhaite pas installer word sur le serveur.
    2 - J'utilise l'outil standard du logiciel pour rappatrier le template word à modifier, et cet outil ne peut le rappatrier que sur le poste client.

    De plus :
    • le mail n'est pas envoyé depuis le serveur mais depuis le client via outlook
    • le doc word est read-only, pas de modification possible

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    381
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 381
    Par défaut
    Problème non résolu.

    Je donne ma solution temporaire (très moche) au cas improbable où d'autres rencontrent le même problème :
    Les instructions dont l'équivalent JS n'a pas été trouvé sont regroupées dans une macro qui est lancée depuis JS. A la fin de mon script JS, j'ai juste ajouté un MyWord.Run("MaMacro").
    Je n'ai trouvé aucun moyen de transmettre des variables à cette macro word depuis JS, donc les paramètres sont "écrit" sur le document word, puis récupéré dessus par la macro.

    Pas terrible, mais à défaut d'avoir mieux, au moins ca me dépanne pour l'instant.

    Je reste ouvert à toute solution plus élégante.

Discussions similaires

  1. Insertion d'un tableau Excel dans Word via Ole
    Par blondelle dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/12/2008, 10h55
  2. [WD12] word ole automation
    Par battit64 dans le forum WinDev
    Réponses: 5
    Dernier message: 15/03/2008, 00h08
  3. Manipuler Excel via Ole automation
    Par falcon dans le forum Excel
    Réponses: 3
    Dernier message: 02/10/2007, 15h39
  4. OLE Automation : pas de menu au lancement de Word
    Par PaulR dans le forum VBA Word
    Réponses: 1
    Dernier message: 04/06/2007, 13h06
  5. Réponses: 1
    Dernier message: 27/09/2006, 17h20

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