Bonjour, je genere un document word et je souhaiterai pouvoir lancer l'impression a partir de ma form.
Merci de votre aide
Bonjour, je genere un document word et je souhaiterai pouvoir lancer l'impression a partir de ma form.
Merci de votre aide
Lancer la commande suivante:
"C:\Program Files\Microsoft Office\Office10\winword.exe" "C:\My Documents\doc1.doc" /mFilePrintDefault
Un code simple pour lancer un programme avec des arguments:
Pour fermer automatiquement Word, essayer (sans garantie) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 // Exemple avec notepad : Process pgm = new Process(); pgm.StartInfo.FileName = "notepad.exe"; pgm.StartInfo.Arguments = "MonFichier.txt"; pgm.Start();
Code : Sélectionner tout - Visualiser dans une fenêtre à part pgm.closeMainWindow();
merci, je vais tester.
Petite question, sachant que je genere le document en mettant word a 'non visible' puis ferme word. est ce que cette commande suffirait?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part "C:\My Documents\doc1.doc" /mFilePrintDefault
j'ai testé ta commande complete ca marche bien, mais est ce qu'il y aurait pas un moyen de lancer l'impression en fond en passant en parametre le nom du document.
Le probleme avec ta commande, c'est que tu dois deja connaitre le path de l'exe winword, puis ensuite lancer word.
Merci de ton aide
Pour retrouver le path d'Access : GetOfficeAppPath("Access.Application", "msaccess.exe");
Je suppose que c'est transposable pour word.
oui j'avais vu ca dans un de tes anciens post.
mais j'ai la contrainte que mon document a imprimer de doit pas etre"visible"..
une idée?
En faisant un Process.start avec startinfo, exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); startInfo.WindowStyle = ProcessWindowStyle.Minimized; // or = ProcessWindowStyle.Hidden; Process.Start(startInfo); startInfo.Arguments = "www.northwindtraders.com"; Process.Start(startInfo);
ok merci je vais tester ca et dire si c'est ok.
j'ai testé en mettant ceci sur un event click mais visiblement ca ne marche (je n'ai pas su le faire marcher)
as tu une idée?
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 private void button1_Click(object sender, EventArgs e) { CreateDoc(0, false); //genere mon doc word avec //le chemin stocké dans sPath ProcessStartInfo startInfo = new ProcessStartInfo("winword.exe"); startInfo.WindowStyle = ProcessWindowStyle.Minimized; // or = ProcessWindowStyle.Hidden; Process.Start(startInfo); startInfo.FileName = sPath; startInfo.Arguments = "/mFilePrintDefault"; Process.Start(startInfo); }
Il faudrait le path complet.ProcessStartInfo("winword.exe");
non pas besoin d'avoir le path complet.
avec le code suivant j'ai juste ke splascscreen de word.sinon tout le reste est invisible.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 private void button1_Click(object sender, EventArgs e) { CreateDoc(0, false); ProcessStartInfo startInfo = new ProcessStartInfo("winword.exe"); startInfo.CreateNoWindow = false; startInfo.WindowStyle = ProcessWindowStyle.Hidden; // or = ProcessWindowStyle.Hidden; //Process.Start(startInfo); startInfo.Arguments = sPath; startInfo.Arguments = "/q"; startInfo.Arguments = "/mFilePrintDefault"; Process.Start(startInfo); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 startInfo.Arguments += " " + "/q"; startInfo.Arguments += " " + "/mFilePrintDefault";
ça ne fonctionnerait pas plus facilement avec les interop sur une instance de word invisible et la commande qui va bien pour imprimer ?
peux tu me donner plus d'explication ca m'interesse.
ou un exemple si tu en as un.
merci
Il faut créer l'interop pour word en ajoutant une référence COM sur la biblitohèque Office Word (dépend de la version installée sur le pc mais en général, la version d'office 97 reste compatible avec les suivantes).
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
17
18
19
20
21
22 private void button2_Click(object sender, EventArgs e) { object missing = Missing.Value; // Création d'une instance de Word Microsoft.Office.Interop.Word._Application aWord; aWord = new Microsoft.Office.Interop.Word.Application(); aWord.Visible = false; // ne pas faire apparaître Word // Ouverture du fichier object file = "D:\\Test.doc"; Microsoft.Office.Interop.Word._Document aDoc = aWord.Documents.Open(ref file, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); // On l'imprime sur l'imprimante par défaut aDoc.PrintOut(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); // On ferme word aWord.Quit(ref missing, ref missing, ref missing); }
c(est exactement ce que je veux mais ca ne marche pas. rien n'est envoyé a l'imprimante .....
voici le code que j'execute. Aucune erreur est catché lorsque je l'execute
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126 public void CreateDoc(int NumRelance, bool IsVisible) { string sPathSaveFacture = string.Empty; if ((tBoxFacture.Text.Length > 0) && (tBoxRaisonSocialeClient.Text.Length > 0)) { Microsoft.Office.Interop.Word.Application msWord = new Microsoft.Office.Interop.Word.Application(); if (IsVisible == true) msWord.Visible = true; else msWord.Visible = false; object missing = System.Reflection.Missing.Value; string sDateFile = dateFacture.Text.Replace("/", "_"); // Attribuer le nom object fileName = string.Empty; sPathSaveFacture = Environment.CurrentDirectory + "\\Content\\" + DateTime.Now.Year.ToString(); object pwd = "XXX"; if (Directory.Exists(sPathSaveFacture) == false) Directory.CreateDirectory(sPathSaveFacture); switch (NumRelance) { case 0: fileName = @sPathSaveFacture + "\\" + "Facture_" + tBoxFacture.Text + "_" + tBoxRaisonSocialeClient.Text + "_" + sDateFile + ".doc"; break; case 1: fileName = @sPathSaveFacture + "\\" + "Relance1_" + tBoxFacture.Text + "_" + tBoxRaisonSocialeClient.Text + "_" + sDateFile + ".doc"; break; case 2: fileName = @sPathSaveFacture + "\\" + "Relance2_" + tBoxFacture.Text + "_" + tBoxRaisonSocialeClient.Text + "_" + sDateFile + ".doc"; break; case 3: fileName = @sPathSaveFacture + "\\" + "Relance3_" + tBoxFacture.Text + "_" + tBoxRaisonSocialeClient.Text + "_" + sDateFile + ".doc"; break; default: fileName = @"Facture_" + tBoxFacture.Text + "_" + tBoxRaisonSocialeClient.Text + "_" + sDateFile + ".doc"; break; } Microsoft.Office.Interop.Word.Document nvDoc; // Tester s'il s'agit d'un nouveau document ou d'un document existant. if (File.Exists((string)fileName)) { // ouvrir le document existant nvDoc = msWord.Documents.Open(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); try { nvDoc.Unprotect(ref pwd); } catch {} } else { // Choisir le template object templateName = ""; switch (NumRelance) { case 0: templateName = Environment.CurrentDirectory + "\\Content\\FactureEMV3.dot"; break; case 1: templateName = Environment.CurrentDirectory + "\\Content\\Relance1.dot"; break; case 2: templateName = Environment.CurrentDirectory + "\\Content\\Relance2.dot"; break; case 3: templateName = Environment.CurrentDirectory + "\\Content\\Relance3.dot"; break; default: templateName = Environment.CurrentDirectory + "\\Content\\FactureEMV3.dot"; break; } // Créer le document nvDoc = msWord.Documents.Add(ref templateName, ref missing, ref missing, ref missing); } object field = "NumFacture"; nvDoc.FormFields.get_Item(ref field).Result = tBoxFacture.Text; field = "Raison_Social"; nvDoc.FormFields.get_Item(ref field).Result = tBoxRaisonSocialeClient.Text; field = "Adresse"; nvDoc.FormFields.get_Item(ref field).Result = tBoxAdresseClient.Text; field = "CP"; nvDoc.FormFields.get_Item(ref field).Result = tBoxCPClient.Text; field = "Ville"; nvDoc.FormFields.get_Item(ref field).Result = tBoxVille.Text; pwd = "XXX"; object noReset = true; object useIRM = true; object enforce = true; nvDoc.Protect2002(Microsoft.Office.Interop.Word.WdProtectionType.wdAllowOnlyReading, ref noReset, ref pwd); // Sauver le document nvDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); //sPath est utilisé pour l'attachement au mail sPath = fileName.ToString(); // nvDoc.PrintPreview(); if (IsVisible == false) { nvDoc.PrintOut2000(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); // Fermer le document nvDoc.Close(ref missing, ref missing, ref missing); //Fermeture de word msWord.Quit(ref missing, ref missing, ref missing); } } else { MessageBox.Show("Impossible d'éditer le document, \n\rveuillez saisir/selectionné un client.", "Erreur edition facture", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
euh ... le code que tu écris ici n'est pas sensé imprimer quelque chose. Soit ton copier-coller était raté, soit je suis très mal réveillé ce matinca ne marche pas. rien n'est envoyé a l'imprimante .....
J'ai oublié de préciser que le code que j'ai écris ici pour l'impression est basé sur Word 2007, pas forcément compatible avec ta version d'office. Il faut adapter pour ton cas.
Desolé j'ai oublié de DEcommenter l'instruction qui envoi le doc en impression (chose faite j'ai edité mon post precedent).
Je suis sur office 2003, quelles sont les modifications a apportés, la fonction PrintOut a changer??
Merci
les paramètres peuvent avoir changé. Je n'ai pas de version 2003 ici pour comparer. Regarde bien les noms des paramètres demandés dans le corps de la fonction.
Est-ce que ton code passe bien sur la ligne ? As-tu vérifié en posant un piont d'arrèt sur la ligne ? PArce que je vois que tu testes:
Ensuite, tu utilises PrintOut2000 et moi la fonction PrintOut. As-tu essayé cette dernière ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part if (IsVisible == false)
oui, j'ai mis un point d'arret et on arrive bien sur l'instruction printOut, et j'ai bien essayé les deux fonctions PrintOut et PrintOut200 les deux ne fonctionnent pas.
PS: j'ai verifié dans MSDN et les paramètres sont les memes pour 2003 que pour 2007
http://msdn.microsoft.com/en-us/libr....printout.aspx
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager