Tabellen in Word-Dokument schreiben

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Nicole_DTB
Beiträge: 5
Registriert: Do 16. Mär 2017, 13:21

Tabellen in Word-Dokument schreiben

Beitrag von Nicole_DTB »

Bin Lazarus-Anfänger und versuche mehrere Tabellen in ein Word-Dokument zu schreiben.
Das gelingt mir auch mit einer Tabelle

varTabelle := varDokument.Tables.Add(WordApp.Selection.Range, 7, 2);
varTabelle.Cell(1, 1).Range.Text := widestring(UTF8Decode('X'));
varTabelle.Cell(1, 2).Range.Text := widestring(UTF8Decode('Y'));
usw.

Wenn ich auf diese Weise versuche eine 2. Tabelle anzulegen, dann werden die neuen Zellen aber immer als neue Spalte an die 1. Tabelle angefügt.

Habe leider keine (für Anfänger wie mich) geeignete Anleitung gefunden, wie man Tabellen in einem Worddokumet formatiert (z.B. auch Rahmen um Zellen).

Hat jemand einen Tipp für mich, wo ich mich da schlau machen kann ?

Mathias
Beiträge: 6194
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Tabellen in Word-Dokument schreiben

Beitrag von Mathias »

Es wäre noch interessant zu wissen was VarTabelle und varDokument ist, ist dies ein StringGrid ?

Ohne dies kann dir sicher niemand helfen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Nicole_DTB
Beiträge: 5
Registriert: Do 16. Mär 2017, 13:21

Re: Tabellen in Word-Dokument schreiben

Beitrag von Nicole_DTB »

Entschuldigung !
Ich bin so "frisch" in Lazarus, dass ich noch nicht mal die Fragen ordentlich stellen kann.

varDokument:oleVariant;
varTabelle:oleVariant;

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Tabellen in Word-Dokument schreiben

Beitrag von wp_xyz »

Es gibt einige recht gute wiki-Seiten dazu: http://wiki.lazarus.freepascal.org/WordAutomation/de und evtl. auch http://wiki.lazarus.freepascal.org/Exce ... 007plus/de. Allerdings ändert Microsoft gelegentlich die Aufrufkonventionen für die einzelnen Prozeduren, so dass das ganze zienlich viel Raterei wird. Du solltest daher auch versuchen im Internet die Dokumentation zu finden, z.B. https://msdn.microsoft.com/de-de/library/ff837519.aspx für Word2013+.

Um eine zweite Tabelle zu erzeugen musst du m.E. "varTable := varDocument.Tables.Add(....)" erneut aufrufen.

Das alles ohne Garantie, denn ich habe OLEAutomation immer gehasst.

Nicole_DTB
Beiträge: 5
Registriert: Do 16. Mär 2017, 13:21

Re: Tabellen in Word-Dokument schreiben

Beitrag von Nicole_DTB »

Meine rudimentären Kenntnisse habe ich von der Wiki-Seite (Wordautomation), die du da erwähnst..
Aber weitere Infos zu meinem Problem finde ich dort eben nicht.

Der erneute Aufruf für die 2. Tabelle führt dazu, dass im Worddokument die 2 Tabelle an die erste "geklatscht" wird, was ich natürlich nicht will. Ich habe irgendwie das Gefühl, dass es einen Befehl (sinngemäß) "Close Tabelle 1" geben müsste, damit man die 2 Tabelle schreiben kann.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Tabellen in Word-Dokument schreiben

Beitrag von wp_xyz »

Du könntest zur Sicherheit für beide Tabellen verschiedene Variablennamen verwenden. Außerdem könntest zu nach der 1. Tabelle z.B. einen Zeilenumbruch ins Word-Dokument schreiben - ich denke, dass Word zwei direkt aufeinander folgende Tabellen auch ohne Abstand hintereinander layoutet.

Nicole_DTB
Beiträge: 5
Registriert: Do 16. Mär 2017, 13:21

Re: Tabellen in Word-Dokument schreiben

Beitrag von Nicole_DTB »

Habe beide Vorschläge ausprobiert (Zeilenumbruch und unterschiedliche Namen).
Das Problem bleibt unverändert bestehen.

wp_xyz
Beiträge: 4889
Registriert: Fr 8. Apr 2011, 09:01

Re: Tabellen in Word-Dokument schreiben

Beitrag von wp_xyz »

Zur Formatierungsfrage hilft vielleicht das: https://msdn.microsoft.com/en-us/librar ... =office.11).aspx

Nicole_DTB
Beiträge: 5
Registriert: Do 16. Mär 2017, 13:21

Re: Tabellen in Word-Dokument schreiben

Beitrag von Nicole_DTB »

Habe das Problem gelöst :D :D

Es fehlte der Befehl

WordApp.Selection.EndKey(6);

der dafür sorgt, dass die Cursorposition nicht mehr irgendwo in der Tabelle ist, sondern am Ende des Dokumentes.
Dadurch kann jetzt auch die zweite Tabelle korrekt positioniert werden.

Eigentlich ganz einfach :oops:

Antworten