Laden...

Seriendruckfelder in Word

Erstellt von sg-sd vor 17 Jahren Letzter Beitrag vor 17 Jahren 4.567 Views
S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren
Seriendruckfelder in Word

Hallo zusammen,

ich habe mir über eine COM-Schnittstelle zugriff auf ein Word-Dokument verschafft. In diesem Word-Dokument habe ich Seriendruckfelder aus einer Datenbank. Jetzt würde ich diese gerne aus meinem Programm ansprechen und mit Daten befüllen, nur leider weiss ich nicht wie das geht und habe bis jetzt auch noch keinen Erfolg im Internet gehabt.
Kann mir da jemand weiterhelfen?

gruß sg-sd

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!

3.728 Beiträge seit 2005
vor 17 Jahren
Word-Seriendruck mit C#

Folgender Artikel sollten Dir weiterhelfen:

Word MailMerge Problem

Ansonsten gibts hier ist ein komplettes Seriendruck-Beispiel mit C#: http://support.microsoft.com/kb/301659/

S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren

Danke für Links nur zum ersten Link "Word MailMerge Problem" habe ich noch eine Frage.

Der Threaderöffner schreibt das er folgendes deklarieren musste damit das Problem gelöst ist :

MailMergeDataField mailMergeCellValue

Ist dieses MailMergeDataField abgeleitet aus:

wordDoc.MailMerge.DataSource.DataFields

oder woher nimmt der jenige diesen Deklarationstyp??

Das hat er geschrieben gehabt:

mit MailMergeDataField mailMergeCellValue = fields.get_Item(ref fieldIndexer)

komm ich jetzt auf das value des gewünschten feldes.
einziges problem: ich komme nur auf die values vom ersten datensatz, habe mich mit dem activerecord propertyy gespielt, komme aber noch auf keinen trichter

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!

S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren

Habe die Antwort gefunden:

Word.MailMergeDataField

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!

S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren

Also ich glaub ich bin zu blöd dafür, ich bekomme es einfach nicht hin.
Ich habe gestern den ganzen Tag verschiedene Ansätze ausprobiert und ich bekomme einfach nicht den Zugriff hin.
Kann wir vielleicht jemand noch nen Tip geben?

Nochmal mein Problem:

Ich habe ein WordComInterface in meiner C#-Webanwendung. Desweiteren habe ich ein Wordformular mit Seriendruckfeldern, welche als Datenquelle die Datenbank-Tabelle haben in der die Daten für das Formular stehen.
Nun möchte ich aus meiner Anwendung heraus das Formular mit bestimmten Daten gefüllt anzeigen. Die Daten hole ich mir über ein Dataset und möchte diese dann an bestimmten Stellen im Formular ( Seriendruckfelder ) anzeigen lassen.
Dies klappt aber nicht, aus welchem Grund auch immer. Ich schaffe es nur mir mittlerweile über 3 Wege die Anzahl der Seriendruckfelder zu geben, aber ich bekomme keinen Zugriff drauf so das ich die Daten dort abspeichern kann.
Ich habe auch schon die Beispiele von Rainbird durch gekaut von oben nach unten und von unten nach oben. Ich schaff es einfach nicht.
Bitte kann mir jemand helfen??

gruß sg-sd

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!

3.728 Beiträge seit 2005
vor 17 Jahren
Füllen

Du kannst die Seriendruck-Datenqulle nicht von Hand befüllen. Du musst entweder eine Datei (CSV-Textdatei, Excel, Word, etc.) angeben, die die Daten enthält oder eine Datenbankverbindung (OLEDB oder ODBC) und ein SQL-SELECT-Statement angeben.

Der Seriendruck zieht sich also die Daten selbst. Wenn Du ein Word Dokument manuell befüllen möchtest, sind Seriendruckfelder nicht der richtige Weg. Stattdessen solltest Du über das über ein eingebettetes XML-Schema tun oder über Textmarken.

S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren

Oh 8o, dann habe ich mir also um sonst den Kopf zerbrochen???? 🤔
hmm kein Wunder das ich das nicht hinbekommen habe.

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!

S
sg-sd Themenstarter:in
106 Beiträge seit 2006
vor 17 Jahren

Also mit Bookmarks funktioniert das ganze sofort und einwandfrei.
Die Bookmarks habe ich nach diesem Prinzip gefüllt:

if (b.Name == "Firma")
{
       wordApp.Selection.SetRange(b.Start, b.End);

       wordApp.Selection.Text = bookmarkArray[0];
}

Wer, Wie, Was, Wieso, Weshalb, Warum ??
Wer nicht fragt bleibt dumm!!!