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:
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);
}
}
}
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ß
@1:
wordapp.Visible = false;
@2:
wordapp.Dialogs.Item(Word.WdWordDialog.wdDialogFilePrint).Show(ref n);
liefert dir den PrintDialog, falls dir das hilft !??!
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
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.