Lancer du vb de delphi dans word [Résolu]

Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006
- - Dernière réponse : cs_pers
Messages postés
40
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009
- 23 nov. 2006 à 14:21
Est-il possible de lancer une commande visualBasic dynamique pour Word dans Delphi. (Avec des argument venant de delphi.
Je dois lancer cela :
Application.PrintOut FileName:="", Range:=wdPrintAllDocument, Item:= wdPrintDocumentContent, Copies:=1, Pages:="", PageType:=wdPrintAllPages, ManualDuplexPrint:=False, Collate:=True, Background:=True, PrintToFile:= False, PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, PrintZoomPaperHeight:=0


J’ai essayer de passer par la commande sous Delphi monfichierword.printOut();


Mais j'ai une erreur me disant :

Ma ligne est celle la :
monFichier.PrintOut(Background,EmptyParam,range,EmptyParam,EmptyParam,EmptyParam,EmptyParam,copie,EmptyParam,PageType,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam


J’avoues que je ne vois pas pourquoi cela ne fonctionne pas .
ma variable copie provient d'une autre form et quand je fais un showmessage(copie); avant le printout il m'affiche bien 1 .


Je ne comprends pas.


Merci d’avance.

(j'ai posté sur un autre forum aussi mais personne à de reponse )
Afficher la suite 

6 réponses

Meilleure réponse
Messages postés
40
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009
3
Merci
salut
Moi personnellement je préfere ainsi car je dois pas me farcir les "emptyparam" et pas respecter un certain ordre
(enfin pas encore rencontrer des pb à ce niveau)

ce serait sans aucun doute plus facile de voir un peu plus de ton code...

Range n'est pas l'imprimante mais le type de sélection à imprimer ici = valeur numérique

Pour l'ensemble des param's tu poses la question en VBA - l'aide n'est pas trop ma faite

bonne après-midi

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 194 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_pers
Messages postés
1708
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
5 octobre 2019
1
0
Merci
Salut,

Tu passes trop de paramètres (il n'en faut que 14) ce qui fait que tu te décales.
Je pense qu'il faut écrire :

monFichier.PrintOut(EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    copie,
                    EmptyParam,
                    PageType,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam,
                    EmptyParam);

Bonne prog'

japee
Commenter la réponse de japee
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006
0
Merci
Au debut je croyais comme toi mais quand je rentre seulemeent 14 argument il me met :
[Error] Interface_Termite.pas(1205): Not enough actual parameters
et quand je rentre cela

monFichier. et que je rentre le mot PrintOut j'ai une sorte d'info bule qui me met tous ses arguments .

je te fait un print :


 
Commenter la réponse de dederfred
Messages postés
40
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009
0
Merci
Salut

Je te propose ceci. Ca fonctionne chez moi mais c'est largement perfectible

procedure TForm1.Button1Click(Sender: TObject);
Var MsWord : Variant ;
begin

// comobj,wordxp,OleServer dans les uses
try
  MsWord := CreateOleObject ('Word.Application');
except
  on E: EOleSysError do MsWord := GetActiveOleObject('Word.Application');
end;

MsWord.Visible := True ;


MsWord := GetActiveOleObject('Word.Application');
MsWord.Documents.Open('d:\test\MonDoc.doc');


MsWord.ActiveDocument.printout(Background := True ,Range:=wdPrintRangeOfPages,Pages := '1-3' ) ;


end;
Commenter la réponse de cs_pers
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006
0
Merci
Merci beaucoup de ta solution je vais l'essayer mais si une solution autre existe je suis preneur car mon application est basé a l'origine sur le composant TWordApplication se serait embetant de devoir refaire le travaille d'une semaine.
Commenter la réponse de dederfred
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006
0
Merci
Petite question range est bien le nom de l'imprimante choisie ??
Si possible pouvez vous me donner la signification de chaque argument de la commande printout ?
merci beaucoup ou si vous trouvez un lien le fesant car je n'en trouve pas et j'ai peu etre fait une erreure .

Pour information , j'ai tester ce qui ma était donner au dessu s et j'ai la meme erreure ...

    MsWord.ActiveDocument.printout(Background := Background ,Range:=range,Copies :=copie ) ;
Commenter la réponse de dederfred