PB à toute heure et à tout moment. (à parcourir avec modération)

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 26-03-2010 09:18:35

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

[RESOLU] Fusion Word et OLE

Salut les p'tit clous...

Je travaille sous pb5.0, et j'utilise un objet ole pour ouvrir un doc de fusion.... Tout fonctionne correctement, seulement on me demande de migrer de word 97 à word 2003 et là tout fou le camp...
Je plaisante, en fait mon problème subsiste à la fermeture du document word, apparemment coté pb on attend un retour de word de la forme:

Code: pb

// Retour d'information à partir de Word

IF message.number = WM_DOC_SAVED THEN
  ole_word.clear()
  CloseWithReturn( Parent, lparam )
END IF


Avec

Code: pb

// WM_USER message 
CONSTANT LONG WM_DOC_SAVED = 2008

Or mon message.number me ramène 7.... Je suppose que ce code attend que l'on est sauvegardé le doc word avant de rendre la main à pb... Et là comme ça me ramène 7, pb freeze...
Ma question est : est-ce que cette valeur de 2008 vous parle?

Ah oui et j'ai aussi ça...

Code: pb

// Classe de Word 8.0
String ls_WordClassName = "OpusApp"

Apparemment, c'est une façon de nommer la classe d'application word, est-ce que quelqu'un aurait du détail sur le sujet...

Bye
Pascal

Dernière modification par Pilou007 (08-04-2010 07:23:53)

Hors ligne

 

#2 01-04-2010 07:19:54

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Fusion Word et OLE

Salut
Comme on dit, pas de nouvelle, ...... Pas de nouvelle....

Non, il n'y a personne qui connaisse cela?

merci pour votre aide
Bye
Pascal

Hors ligne

 

#3 08-04-2010 07:14:50

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Fusion Word et OLE

Pour ma part, j'ai fait ce script permettant de faire une fusion Word à partir de PB :

Code: pb

IF len(ls_resultatfusion) > 0 THEN 
  IF fileexists(ls_resultatfusion) = TRUE THEN
    lb_test = FileDelete(ls_resultatfusion)
    IF lb_test = FALSE THEN
      Messagebox("Attention", "Le fichier est déjà ouvert~nVeuillez le fermer avant de recommencer")
      RETURN
    END IF
  END IF
END IF

ll_word = OpenChannel ("Winword", "SYSTEM", Handle(THIS))

DocWord = CREATE OLEObject
ModeleWord = CREATE OLEObject
ResultatWord = CREATE OLEObject

IF ll_word < 0 THEN
  //Word n'est pas lancé donc on ouvre une nouvelle session
  li_resultat = DocWord.ConnectToNewObject("Word.Application.8")
ELSE
  //Word est lancé, on ferme la connexion
  CloseChannel(ll_word,Handle(THIS))
  li_resultat = DocWord.ConnectToObject("", "Word.Application.8")
END IF

IF li_resultat = 0 THEN
  DocWord.Application.Visible = TRUE
  //Ouverture du modèle
  DocWord.Application.Documents.open(ls_modele)
  DocWord.Application.Activate()
  ModeleWord = DocWord.Application.ActiveDocument
  
  //Commande d'ouverture de la source de données
  DocWord.ActiveDocument.Mailmerge.OpenDataSource(ls_fichierdonnees , 0, FALSE, FALSE, TRUE, FALSE," ","",FALSE, "", "", "Entire Spreadcheet")
  DocWord.ActiveDocument.Mailmerge.Destination = 0 //fusionner dans le fichier

  DocWord.ActiveDocument.Mailmerge.SuppressBlankLines = TRUE
  
  //Fusionner
  DocWord.ActiveDocument.Mailmerge.Execute(TRUE)
  
  ResultatWord = DocWord.ActiveDocument
  ResultatWord.SaveAs(ls_resultatfusion)
  
//  ResultatWord.PrintOut()
  
  ModeleWord.close(0)
  
  DocWord.DisconnectObject()
  //Destruction des objects
  DESTROY ModeleWord
  DESTROY DocWord
  DESTROY ResultatWord
  
END IF

Hors ligne

 

#4 08-04-2010 07:23:28

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Fusion Word et OLE

Salut
Merci Julien pour ton code...

En fait je pense avoir trouvé...

La constante 2008 correspond à une constante dans une macro qui fait des choses bizarre... Je n'y connais pas grand chose en macro word et j'ai pas trop envie de m'investir la dedans....

Pour le nom de word "opusapp", c'est le nom donné à word par microsoft, je ne sais pas trop d'où ça sort, mais bon, ça ne me gène en rien...

Bon j'ai finalement réussi à me débrouiller... Je clos le sujet...

Merci
Bye
Pascal

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22