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

Signaler
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006
-
Messages postés
38
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009
-
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 )

6 réponses

Messages postés
38
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009

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
Messages postés
1719
Date d'inscription
vendredi 27 décembre 2002
Statut
Modérateur
Dernière intervention
6 août 2020
3
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
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006

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 :


 
Messages postés
38
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009

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;
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006

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.
Messages postés
19
Date d'inscription
samedi 4 novembre 2000
Statut
Membre
Dernière intervention
23 novembre 2006

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 ) ;