Laden...

[C#] Word und Drucken

Erstellt von Argentana vor 17 Jahren Letzter Beitrag vor 17 Jahren 2.646 Views
A
Argentana Themenstarter:in
1 Beiträge seit 2007
vor 17 Jahren
[C#] Word und Drucken

Hallo zusammen,

ich bin schon fast der verzweiflung nahe - Ich möchte aus einer C#-Anwendung, Daten an Word übergeben und dann drucken. Funktioniert soweit so gut, nur wäre es mir lieber, wenn Word nicht extra geöffnet werden würde dafür, sondern beim Klick auf den Button einfach den druck startet.

Hab bereits diverse Dinge durchprobiert - ohne Erfolg 🙁

Was geschehen soll:

  • Word (nicht sichtbar) im Hintergrund laden
  • Beim Klick auf den Druck-Button soll der Ausdruck gestartet werden und Word wieder geschlossen werden.

Hier der derzeitige Code (Daten werden an Word übergeben und in Word muss der Druck manuell gestartet werden):


        private void button1_Click(object sender, EventArgs e)
        {
            {
                Word.ApplicationClass wordapp = new Word.ApplicationClass();

                object n = System.Reflection.Missing.Value;
                object docName = Application.StartupPath + "\\bestellungneu.doc";
                object o1 = "Text1";
                object o2 = "Text2";
                object o3 = "Text3";
                object o4 = "Text4";
                object o5 = "Text5";
                object o10 = "Text10";
                object o11 = "Text11";

                if (wordapp == null || !File.Exists((string)docName))
                {
                    MessageBox.Show("Word-Vorlage wurde nicht gefunden!" + (string)docName); return;
                }
                wordapp.Visible = true;
                try
                {
                    wordapp.Documents.Open(ref docName, ref n, ref n, ref n, ref n, ref n,
                     ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n);
                    Word.Document doc = wordapp.ActiveDocument;
                    Word.Selection sel = wordapp.Selection;

                    wordapp.ActiveDocument.FormFields.get_Item(ref o1).Result = textBox1.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o2).Result = textBox2.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o3).Result = textBox3.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o4).Result = textBox4.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o5).Result = textBox5.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o10).Result = comboBox1.Text;
                    wordapp.ActiveDocument.FormFields.get_Item(ref o11).Result = textBox25.Text;
                    

                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
        }

L
2 Beiträge seit 2007
vor 17 Jahren

Hallo,
um Word unsichtbar zu starten sollte es reciehn Visible auf false zu setzen, zumindest hat das bei VB immer ausgereicht.

wordapp.Visible = false;

Zu deiner zweiten Frage habe ich leider keine Antwort.

Gruß

738 Beiträge seit 2007
vor 17 Jahren

@1:


wordapp.Visible = false;

@2:


wordapp.Dialogs.Item(Word.WdWordDialog.wdDialogFilePrint).Show(ref n);

liefert dir den PrintDialog, falls dir das hilft !??!

738 Beiträge seit 2007
vor 17 Jahren

hi nochmal:

so auf die schnelle würde ich das zweite problem so lösen:


object n = System.Reflection.Missing.Value;
doc.PrintOut(ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref n, ref  n, ref  n);

was die einzelnen Parameter bedeuten, kannst du ja mit dem MarkoRecorder ausprobieren; oder in der Doku nachschlagen

M
9 Beiträge seit 2006
vor 17 Jahren

Die Lösung ist für sein Problem richtig und müsste funktionieren. Bei den Parametern
handelt es sich einfach nur um Eigenschaften eines PrintDialogs.

@2:

  
wordapp.Dialogs.Item(Word.WdWordDialog.wdDialogFilePrint).Show(ref n);  
  

liefert dir den PrintDialog, falls dir das hilft !??!

Dabei ist jedoch zu beachten, dass hiermit der PrintDialog von Word aufgerufen wird!
Siehe auch: Druckdialog in Word anzeigen

😉

Gruß

Michael W.