Sign in Join
Wiki copytemporary

WordAutomation/de: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
1-Zurück zur [[Office Automation/de|Office Automation]].\
1+[![Windows logo - 2012.svg](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Windows_logo_-_2012.svg/50px-Windows_logo_-_2012.svg.png)](</File:Windows_logo_-_2012.svg>)
22
3-=Word als OleObjekt= Word lässt sich wie alle MS Office Produkte automatisieren. Im Gegensatz zu den übrigen MS Office Produkten ist es bei der Automatisierung sehr sehr langsam und reagiert sehr ungewohnt.\
4-Wenn man als Automatisierungsobjekt nicht zwingend auf MS Word angewiesen ist, dann sollte man für die Automatisierung MS Excel nehmen.\
5-Wenn Sie Umlaute usw. verwenden, dann sollten Sie wissen, dass Word UTF16 codierte Strings verwendet.\
6-Für die Oleautomation muss die Unit **ComObj** eingebunden werden.\
7-Wenn Sie mit Umlauten usw. arbeiten dann brauchen Sie für das Stringcasting die Unit **lclproc**.\
3+Dieser Artikel behandelt ausschließlich [Windows](</Category:Windows> "Category:Windows").
84
9-Beispiel:\
5+Siehe auch: [[Multiplatform Programming Guide/de]]
106
11-``` pascal
7+│ **Deutsch (de)** │
8+
9+Zurück zur [[Office Automation/de|Office Automation]].
10+
11+
12+
13+
14+# Word als OleObjekt
15+
16+Word lässt sich wie alle MS Office Produkte automatisieren. Im Gegensatz zu den übrigen MS Office Produkten ist es bei der Automatisierung sehr sehr langsam und reagiert sehr ungewohnt.
17+Wenn man als Automatisierungsobjekt nicht zwingend auf MS Word angewiesen ist, dann sollte man für die Automatisierung MS Excel nehmen.
18+Wenn Sie Umlaute usw. verwenden, dann sollten Sie wissen, dass Word UTF16 codierte Strings verwendet.
19+Für die Oleautomation muss die Unit **ComObj** eingebunden werden.
20+Wenn Sie mit Umlauten usw. arbeiten dann brauchen Sie für das Stringcasting die Unit **lclproc**.
21+
22+Beispiel:
23+
24+```
1225unit
13- ComObj, lclproc;
26+ ComObj, lclproc;
1427```
1528
16-=Speicherplatz für Word und Worddokument reservieren=
29+
30+
1731
18-``` pascal
32+# Speicherplatz für Word und Worddokument reservieren
33+```
1934var
20- varWdApp: oleVariant; // Reserviert Speicher für die Programmsteuerung
21- varDokument: oleVariant; // Reserviert Speicher für die Steuerung des Worddokuments
35+ varWdApp: oleVariant; // Reserviert Speicher für die Programmsteuerung
36+ varDokument: oleVariant; // Reserviert Speicher für die Steuerung des Worddokuments
2237```
2338
24-=Wordsteuerung=
39+
2540
26-## Word OleObjekt erstellen
41+# Wordsteuerung
2742
28-``` pascal
43+## Word OleObjekt erstellen
44+```
2945begin
30- ...
31- try
32- varWdApp := CreateOleObject('Word.Application'); // erstellt das Wordobjekt
33- except
34- WriteLn('MS Word kann nicht gestartet werden.'); // Fehlerbehandlung
35- end;
36- ...
37-end;
46+ ...
47+ try
48+ varWdApp := CreateOleObject('Word.Application'); // erstellt das Wordobjekt
49+ except
50+ WriteLn('MS Word kann nicht gestartet werden.'); // Fehlerbehandlung
51+ end;
52+ ...
53+ end;
3854```
3955
40-==Word Version ermitteln==
56+
4157
42-``` pascal
58+## Word Version ermitteln
59+```
4360begin
44- ...
45- ShowMessage(varWdApp.Version);
46- ...
47-end;
61+ ...
62+ ShowMessage(varWdApp.Version);
63+ ...
64+ end;
4865```
4966
50-==Word beenden und Speicher freigeben==
67+
5168
52-``` pascal
69+## Word beenden und Speicher freigeben
70+```
5371begin
54- ...
55- varWdApp.Quit;
56- varWdApp := Unassigned;
57- ...
58-end;
72+ ...
73+ varWdApp.Quit;
74+ varWdApp := Unassigned;
75+ ...
76+ end;
5977```
6078
61-==Die Sichtbarkeit von Word steuern== Eine unsichtbare Anwendung verhindert während der Automatisierung das Flackern des Bildschirms.\
79+
6280
63-``` pascal
81+## Die Sichtbarkeit von Word steuern
82+
83+Eine unsichtbare Anwendung verhindert während der Automatisierung das Flackern des Bildschirms.
84+
85+```
6486begin
65- ...
66- varWdApp.Visible := False; // macht Word unsichtbar
67- varWdApp.Visible := True; // macht Word sichtbar
68- ...
69-end;
87+ ...
88+ varWdApp.Visible := False; // macht Word unsichtbar
89+ varWdApp.Visible := True; // macht Word sichtbar
90+ ...
91+ end;
7092```
7193
72-==Word Screenupdating (Bildschirmaktualisierung)==
94+
7395
74-``` pascal
96+## Word Screenupdating (Bildschirmaktualisierung)
97+```
7598begin
76- ...
77- varWdApp.ScreenUpdating := False; // schaltet bei einem sichtbaren Word das Flackern des Bildschirms aus
78- // und erhöht die Verarbeitungsgeschwindigkeit.
79- varWdApp.ScreenUpdating := True; // schaltet die Bildschirmaktualisierung wieder ein.
80- ...
81-end;
99+ ...
100+ varWdApp.ScreenUpdating := False; // schaltet bei einem sichtbaren Word das Flackern des Bildschirms aus
101+ // und erhöht die Verarbeitungsgeschwindigkeit.
102+ varWdApp.ScreenUpdating := True; // schaltet die Bildschirmaktualisierung wieder ein.
103+ ...
104+ end;
82105```
83106
84-==Sprache der Wordinstallation ermittlen==
107+
85108
86-``` pascal
109+## Sprache der Wordinstallation ermittlen
110+```
87111begin
88- ...
89- if varWdApp.System.Country <> wdGermany then ... // prüft, ob die Wordinstallation nicht Deutsch ist.
90- ...
91-end;
112+ ...
113+ if varWdApp.System.Country <> wdGermany then ... // prüft, ob die Wordinstallation nicht Deutsch ist.
114+ ...
115+ end;
92116```
93117
94-=Text des Dokuments bearbeiten=
118+
95119
96-## Neues Worddokument erstellen
120+# Text des Dokuments bearbeiten
97121
98-``` pascal
122+## Neues Worddokument erstellen
123+```
99124begin
100- ...
101- varDokument := varWdApp.Documents.Add; // fügt ein neues 'leeres' Worddokument hinzu
102- ...
103-end;
125+ ...
126+ varDokument := varWdApp.Documents.Add; // fügt ein neues 'leeres' Worddokument hinzu
127+ ...
128+ end;
104129```
105130
106-==Vorhandenes Worddokument öffnen== Es gibt mehrere Möglichkeiten ein Worddokument zu öffnen.\
131+
107132
108-Beispiel 1:\
109-Ein Worddokument mit mehreren Parametern öffnen\
110-Alle Parameter außer Parameter 1 sind optional\
111-\# Parameter: Pfadname und Datename\
112-\#Parameter: False, wenn die Datei nicht in das aktuelle Wordformat konvertiert werden soll\
113-\#Parameter: True, wenn die Datei schreibgeschützt geöffnet werden soll\
114-\#Parameter: True, wenn der Name der Datei der Liste der zuletzt geöffneten Dateien hizugefügt werden soll\
115-\#Parameter: Das Kennwort (Passwort) zum öffnen der Vorlage\
116-\#Parameter:\
117-\#Parameter: Das Kennwort (Passwort) zum Speichern des Dokuments\
118-\#Parameter: Das Kennwort (Passwort) zum Speichern der Vorlage\
119-\#Parameter:\
120-\#Parameter: Das Dateikonvertierungsprogramm, das zum Öffnen des Dokuments verwendet werden soll. Der Standardwert ist wdOpenFormatAuto
133+## Vorhandenes Worddokument öffnen
121134
122-``` pascal
123-begin
124- ...
125- varDokument := varWdApp.Documents.Open(FileName, EmptyParam, EmptyParam,
126- EmptyParam, EmptyParam, EmptyParam,
127- EmptyParam, EmptyParam, EmptyParam,
128- EmptyParam);
129- ...
130-end;
131-```
135+Es gibt mehrere Möglichkeiten ein Worddokument zu öffnen.
136+
137+Beispiel 1:
138+Ein Worddokument mit mehreren Parametern öffnen
139+Alle Parameter außer Parameter 1 sind optional
132140
133-Beispiel 2:\
134-Ein Worddokument mit einem Umlaut usw. im Dateinamen öffnen\
141+ 1. Parameter: Pfadname und Datename
135142
136-``` pascal
143+ 2. Parameter: False, wenn die Datei nicht in das aktuelle Wordformat konvertiert werden soll
144+
145+ 3. Parameter: True, wenn die Datei schreibgeschützt geöffnet werden soll
146+
147+ 4. Parameter: True, wenn der Name der Datei der Liste der zuletzt geöffneten Dateien hizugefügt werden soll
148+
149+ 5. Parameter: Das Kennwort (Passwort) zum öffnen der Vorlage
150+
151+ 6. Parameter:
152+
153+ 7. Parameter: Das Kennwort (Passwort) zum Speichern des Dokuments
154+
155+ 8. Parameter: Das Kennwort (Passwort) zum Speichern der Vorlage
156+
157+ 9. Parameter:
158+
159+ 10. Parameter: Das Dateikonvertierungsprogramm, das zum Öffnen des Dokuments verwendet werden soll. Der Standardwert ist wdOpenFormatAuto
160+
161+```
137162begin
138- ...
139- varDokument := varWdApp.Documents.Open(UTF8ToUTF16('D:\Üben.doc')); // Öffnet ein Worddokument mit Umlauten usw. im Namen
140- ...
141-end;
163+ ...
164+ varDokument := varWdApp.Documents.Open(FileName, EmptyParam, EmptyParam,
165+ EmptyParam, EmptyParam, EmptyParam,
166+ EmptyParam, EmptyParam, EmptyParam,
167+ EmptyParam);
168+ ...
169+ end;
142170```
143171
144-Beispiel 3:\
172+
173+Beispiel 2:
174+Ein Worddokument mit einem Umlaut usw. im Dateinamen öffnen
145175
146-``` pascal
176+```
147177begin
148- ...
149- varDokument := varWdApp.Documents.Open(strPfad); // öffnet ein Worddokument mit Hilfe einer Variablen
150- // (Pfad: maximal 255 Zeichen, Alphanumerisch)
151- varDokument := varWdApp.Documents.Open('D:\Test.doc'); // öffnet ein Worddokument mit festem Pfad hinzu
152- ...
153-end;
178+ ...
179+ varDokument := varWdApp.Documents.Open(UTF8ToUTF16('D:\Üben.doc')); // Öffnet ein Worddokument mit Umlauten usw. im Namen
180+ ...
181+ end;
154182```
155183
156-## Worddokument aktivieren
184+
185+Beispiel 3:
157186
158-``` pascal
187+```
159188begin
160- ...
161- varDokument.Activate; //aktiviert das Worddokument
162- ...
163-end;
189+ ...
190+ varDokument := varWdApp.Documents.Open(strPfad); // öffnet ein Worddokument mit Hilfe einer Variablen
191+ // (Pfad: maximal 255 Zeichen, Alphanumerisch)
192+ varDokument := varWdApp.Documents.Open('D:\Test.doc'); // öffnet ein Worddokument mit festem Pfad hinzu
193+ ...
194+ end;
164195```
165196
166-==Text Cursor setzen==
197+
167198
168-``` pascal
199+## Worddokument aktivieren
200+```
169201begin
170- ...
171- varWdApp.Selection.EndKey(wdStory); // Cursor bewegt sich zum Ende des Dokumentes
172- varWdApp.Selection.HomeKey(wdStory); // Cursor bewegt sich zum Anfang des Dokumentes
173- varWdApp.Selection.MoveRight(wdWord); // Cursor am Anfang des nächsten Wortes
174- varWdApp.Selection.MoveLeft(wdCharacter); // Cursor wird um ein Zeichen nach Links versetzt
175- varWdApp.Selection.Delete(wdCharacter); // Löscht ein Zeichen rechts vom Cursor
176- varWdApp.Selection.MoveDown(wdParagraph); // Cursor bewegt sich zum Anfang des nächsten Abschnitts
177- ...
178-end;
202+ ...
203+ varDokument.Activate; //aktiviert das Worddokument
204+ ...
205+ end;
179206```
180207
181-==Text in ein Worddokument einfügen==
208+
182209
183-``` pascal
210+## Text Cursor setzen
211+```
184212begin
185- ...
186- varWdApp.Selection.TypeText(UTF8Decode('Neuer Text'));
187- varWdApp.Selection.TypeText(UTF8Decode('Zusätzlicher Text')); // Benötigt die Unit lclproc für die korrekte
188- // Umwandlung der Umlaute
213+ ...
214+ varWdApp.Selection.EndKey(wdStory); // Cursor bewegt sich zum Ende des Dokumentes
215+ varWdApp.Selection.HomeKey(wdStory); // Cursor bewegt sich zum Anfang des Dokumentes
216+ varWdApp.Selection.MoveRight(wdWord); // Cursor am Anfang des nächsten Wortes
217+ varWdApp.Selection.MoveLeft(wdCharacter); // Cursor wird um ein Zeichen nach Links versetzt
218+ varWdApp.Selection.Delete(wdCharacter); // Löscht ein Zeichen rechts vom Cursor
219+ varWdApp.Selection.MoveDown(wdParagraph); // Cursor bewegt sich zum Anfang des nächsten Abschnitts
220+ ...
221+ end;
222+```
189223
190- varWdApp.Selection.InsertAfter('Test'); // fügt im Worddokument nach der Cursorposition diesen Text ein
191- // die Cursorpsition befindet sich bei einem frisch geöffneten Worddokument
192- // immer am Anfang des Dokuments
224+
193225
194- ...
195-end;
226+## Text in ein Worddokument einfügen
196227```
228+begin
229+ ...
230+ varWdApp.Selection.TypeText(UTF8Decode('Neuer Text'));
231+ varWdApp.Selection.TypeText(UTF8Decode('Zusätzlicher Text')); // Benötigt die Unit lclproc für die korrekte
232+ // Umwandlung der Umlaute
233+
234+ varWdApp.Selection.InsertAfter('Test'); // fügt im Worddokument nach der Cursorposition diesen Text ein
235+ // die Cursorpsition befindet sich bei einem frisch geöffneten Worddokument
236+ // immer am Anfang des Dokuments
237+
238+ ...
239+ end;
240+```
197241
242+
243+
198244## Worddokument speichern
199245
200-Beispiel 1:\
201-Ein Worddokument ohne Besonderheiten im Namen speichern.\
246+Beispiel 1:
247+Ein Worddokument ohne Besonderheiten im Namen speichern.
202248
203-``` pascal
249+```
204250begin
205- ...
206- varDokument.SaveAs('D:\Test.doc'); // Speichert das Worddokument unter einem neuen Namen
207- varDokument.Save; // Speichert das Worddokument unter seinem aktuellen Namen
208- ...
209-end;
251+ ...
252+ varDokument.SaveAs('D:\Test.doc'); // Speichert das Worddokument unter einem neuen Namen
253+ varDokument.Save; // Speichert das Worddokument unter seinem aktuellen Namen
254+ ...
255+ end;
210256```
211257
212-Beispiel 2:\
213-Ein Worddokment mit Umlaut im Namen speichern.\
258+
259+Beispiel 2:
260+Ein Worddokment mit Umlaut im Namen speichern.
214261
215-``` pascal
262+```
216263begin
217- ...
218- varDokument.SaveAs(UTF8ToUTF16('D:\Üben.doc')); // Speichert das Worddokument (mit Umlauten usw. im Namen)
219- // unter einem neuen Namen ab
220- ...
221-end;
264+ ...
265+ varDokument.SaveAs(UTF8ToUTF16('D:\Üben.doc')); // Speichert das Worddokument (mit Umlauten usw. im Namen)
266+ // unter einem neuen Namen ab
267+ ...
268+ end;
222269```
223270
224-Beispiel 3:\
225-Ein Worddokument in einem anderen Datei-Format speichern.
226-
227-``` pascal
271+
272+Beispiel 3:
273+Ein Worddokument in einem anderen Datei-Format speichern.
274+```
228275const
229- // Möglichkeiten wären u.a.
230- // https://docs.microsoft.com/de-de/office/vba/api/word.wdsaveformat
231- wdFormatDocument97 = 0; // .doc format
232- wdFormatRTF = 6;
233- wdFormatHTML = 8;
234- wdFormatXML = 11;
235- wdFormatDocumentDefault = 16; // .docx format
236- wdFormatPDF = 17;
237- wdFormatOpenDocumentText = 23;
238-var
239- FileFormat: OleVariant; // Wichtig: das muss als OleVariant deklariert sein!
240-begin
241- FileFormat := wdFormatRTF;
242- ADocument.SaveAs(FileName, FileFormat);
243- ...
276+ // Möglichkeiten wären u.a.
277+ // https://docs.microsoft.com/de-de/office/vba/api/word.wdsaveformat
278+ wdFormatDocument97 = 0; // .doc format
279+ wdFormatRTF = 6;
280+ wdFormatHTML = 8;
281+ wdFormatXML = 11;
282+ wdFormatDocumentDefault = 16; // .docx format
283+ wdFormatPDF = 17;
284+ wdFormatOpenDocumentText = 23;
285+ var
286+ FileFormat: OleVariant; // Wichtig: das muss als OleVariant deklariert sein!
287+ begin
288+ FileFormat := wdFormatRTF;
289+ ADocument.SaveAs(FileName, FileFormat);
290+ ...
244291```
245292
246293## Worddokument schliessen und Speicher freigeben
247-
248-``` pascal
294+```
249295begin
250- ...
251- varDokument.Close; // Schliesst das Worddokument
252- varDokument := Unassigned; // Gibt den Speicher für die Programmsteuerung frei
253- ...
254-end;
296+ ...
297+ varDokument.Close; // Schliesst das Worddokument
298+ varDokument := Unassigned; // Gibt den Speicher für die Programmsteuerung frei
299+ ...
300+ end;
255301```
256302
257-==Worddokument Eigenschaften festlegen== Alle Eigenschaften des Worddokumentes können über ihren englischen Namen angesprochen werden.\
303+
258304
259-``` pascal
305+## Worddokument Eigenschaften festlegen
306+
307+Alle Eigenschaften des Worddokumentes können über ihren englischen Namen angesprochen werden.
308+
309+```
260310begin
261- ...
262- varDokument.BuiltInDocumentProperties['Title'].Value := 'Testdokument'; // fügt den Dokumententitel ein
263- varDokument.BuiltInDocumentProperties['Subject'].Value := 'Testdokumente'; // fügt das Thema ein
264- varDokument.BuiltInDocumentProperties['Author'].Value := 'Testuser'; // fügt den Ersteller ein
265- varDokument.BuiltInDocumentProperties['Manager'].Value := 'Testmanager'; // fügt den verantwortlichen Manager ein
266- varDokument.BuiltInDocumentProperties['Company'].Value := 'Testfirma'; // fügt die Firma ein
267- varDokument.BuiltInDocumentProperties['Category'].Value := 'Automatisationsbeispiele'; // fügt die Kategorie ein
268- varDokument.BuiltInDocumentProperties['Comments'].Value := 'Erstes Muster'; // fügt einen Kommentar ein
269- ...
270-end;
311+ ...
312+ varDokument.BuiltInDocumentProperties['Title'].Value := 'Testdokument'; // fügt den Dokumententitel ein
313+ varDokument.BuiltInDocumentProperties['Subject'].Value := 'Testdokumente'; // fügt das Thema ein
314+ varDokument.BuiltInDocumentProperties['Author'].Value := 'Testuser'; // fügt den Ersteller ein
315+ varDokument.BuiltInDocumentProperties['Manager'].Value := 'Testmanager'; // fügt den verantwortlichen Manager ein
316+ varDokument.BuiltInDocumentProperties['Company'].Value := 'Testfirma'; // fügt die Firma ein
317+ varDokument.BuiltInDocumentProperties['Category'].Value := 'Automatisationsbeispiele'; // fügt die Kategorie ein
318+ varDokument.BuiltInDocumentProperties['Comments'].Value := 'Erstes Muster'; // fügt einen Kommentar ein
319+ ...
320+ end;
271321```
272322
273-==Absatz==\
274-===Absatz ausrichten===
323+
275324
276-``` pascal
325+## Absatz
326+
327+
328+
329+### Absatz ausrichten
330+```
277331begin
278- ...
279- varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphright; // Ausrichtung am rechten Dokumentrand
280- varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft; // Ausrichtung am linken Dokumentrand
281- varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter; // Ausrichtung in der Dokumentmitte
282- ...
283-end;
332+ ...
333+ varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphright; // Ausrichtung am rechten Dokumentrand
334+ varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft; // Ausrichtung am linken Dokumentrand
335+ varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter; // Ausrichtung in der Dokumentmitte
336+ ...
337+ end;
284338```
285339
286-===Absatz (Zeilenumbruch) einfügen===
340+
287341
288-``` pascal
342+### Absatz (Zeilenumbruch) einfügen
343+```
289344begin
290- ...
291- varWdApp.Selection.TypeParagraph; // fügt einen Zeilenumbruch (Absatz) ein
292- // Alternative
293- varWdApp.Selection.InsertAfter(String(#13)); // fügt einen Zeilenumbruch im Worddokument ein
294- varWdApp.Selection.InsertAfter(String(#10)); // fügt einen Zeilenumbruch im Worddokument ein
295- ...
296-end;
345+ ...
346+ varWdApp.Selection.TypeParagraph; // fügt einen Zeilenumbruch (Absatz) ein
347+ // Alternative
348+ varWdApp.Selection.InsertAfter(String(#13)); // fügt einen Zeilenumbruch im Worddokument ein
349+ varWdApp.Selection.InsertAfter(String(#10)); // fügt einen Zeilenumbruch im Worddokument ein
350+ ...
351+ end;
297352```
298353
299-==Text formatieren== Der Text wird an der Cursorposition formatiert.
354+
300355
301-``` pascal
302-begin
303- ...
304- varWdApp.Selection.Font.Name := 'Times New Roman'; // Schriftart
305- varWdApp.Selection.Font.Size := 12; // Schriftgrösse
306- varWdApp.Selection.Font.Bold := True; // Fettschrift
307- varWdApp.Selection.Font.Italic := True; // Kursivschrift
356+## Text formatieren
308357
309- varWdApp.Selection.Font.Name := 'Arial'; // Schriftart
310- varWdApp.Selection.Font.Size := 11; // Schriftgrösse
311- varWdApp.Selection.Font.Bold := False; // keine Fettschrift
312- varWdApp.Selection.Font.Italic := False; // keine Kursivschrift
313- ...
314-end;
358+Der Text wird an der Cursorposition formatiert.
315359```
360+begin
361+ ...
362+ varWdApp.Selection.Font.Name := 'Times New Roman'; // Schriftart
363+ varWdApp.Selection.Font.Size := 12; // Schriftgrösse
364+ varWdApp.Selection.Font.Bold := True; // Fettschrift
365+ varWdApp.Selection.Font.Italic := True; // Kursivschrift
366+
367+ varWdApp.Selection.Font.Name := 'Arial'; // Schriftart
368+ varWdApp.Selection.Font.Size := 11; // Schriftgrösse
369+ varWdApp.Selection.Font.Bold := False; // keine Fettschrift
370+ varWdApp.Selection.Font.Italic := False; // keine Kursivschrift
371+ ...
372+ end;
373+```
316374
317-==Bookmarks==\
318-===Speicher für die Bookmarksteuerung reservieren===
375+
319376
320-``` pascal
377+## Bookmarks
378+
379+
380+
381+### Speicher für die Bookmarksteuerung reservieren
382+```
321383var
322- varBookmark: oleVariant; // Reserviert Speicher für die Steuerung der Bookmark
384+ varBookmark: oleVariant; // Reserviert Speicher für die Steuerung der Bookmark
323385```
324386
325-===Variable initialisieren===
387+
326388
327-``` pascal
389+### Variable initialisieren
390+```
328391begin
329- ...
330- // Fügt an der Stelle einer Bookmark (Textmarke / Markierung) einen Text ein
331- varBookmark := varDokument.Bookmarks.Item(2); // Auswahl der zu ersetzenden Bookmark (Markierung) über den Index
332- // in diesem Fall ist es die erste Bookmark
333- // Alternative
334- varBookmark := varDokument.Bookmarks.Item('Test2'); // Auswahl der zu ersetzenden Bookmark (Markierung) über ihren Namen
335- ...
336-end;
392+ ...
393+ // Fügt an der Stelle einer Bookmark (Textmarke / Markierung) einen Text ein
394+ varBookmark := varDokument.Bookmarks.Item(2); // Auswahl der zu ersetzenden Bookmark (Markierung) über den Index
395+ // in diesem Fall ist es die erste Bookmark
396+ // Alternative
397+ varBookmark := varDokument.Bookmarks.Item('Test2'); // Auswahl der zu ersetzenden Bookmark (Markierung) über ihren Namen
398+ ...
399+ end;
337400```
338401
339-===An die Anfangsposition der Bookmark schreiben===
402+
340403
341-``` pascal
404+### An die Anfangsposition der Bookmark schreiben
405+```
342406begin
343- ...
344- varBookmark.Range.Text := UTF8ToUTF16('Testeintrag für die Bookmark'); // damit wird an der Position der
345- // Bookmark der Text eingefügt.
346- ...
347-end;
407+ ...
408+ varBookmark.Range.Text := UTF8ToUTF16('Testeintrag für die Bookmark'); // damit wird an der Position der
409+ // Bookmark der Text eingefügt.
410+ ...
411+ end;
348412```
349413
350-===Bookmark löschen===
414+
351415
352-``` pascal
416+### Bookmark löschen
417+```
353418begin
354- ...
355- // Löscht, die ausgewählte Bookmark und nicht den eingefügten Text
356- varDokument.Bookmarks.Item(1).Delete; // Löscht die Bookmark über einen Index
357- // Alternative
358- varDokument.Bookmarks.Item('Test1').Delete; // Löscht die Bookmark über ihren Namen
359- ...
360-end;
419+ ...
420+ // Löscht, die ausgewählte Bookmark und nicht den eingefügten Text
421+ varDokument.Bookmarks.Item(1).Delete; // Löscht die Bookmark über einen Index
422+ // Alternative
423+ varDokument.Bookmarks.Item('Test1').Delete; // Löscht die Bookmark über ihren Namen
424+ ...
425+ end;
361426```
362427
363-===Variable für Bookmarksteuerung freigeben===
428+
364429
365-``` pascal
430+### Variable für Bookmarksteuerung freigeben
431+```
366432begin
367- ...
368- varBookmark := Unassigned;
369- ...
370-end;
433+ ...
434+ varBookmark := Unassigned;
435+ ...
436+ end;
371437```
372438
373-===Prüfen, ob eine bestimmte Bookmark vorhanden ist===
439+
374440
375-``` pascal
441+### Prüfen, ob eine bestimmte Bookmark vorhanden ist
442+```
376443begin
377- ...
378- if varDokument.Bookmarks.Exists('Text1') then ... ; //Prüft, ob eine Bookmark vorhanden ist
379- ...
380-end;
444+ ...
445+ if varDokument.Bookmarks.Exists('Text1') then ... ; //Prüft, ob eine Bookmark vorhanden ist
446+ ...
447+ end;
381448```
382449
383-===Bookmarks zählen===
450+
384451
385-``` pascal
452+### Bookmarks zählen
453+```
386454var
387- intAnz: Integer;
388-begin
389- ...
390- intAnz := varDokument.Bookmarks.Count;
391- ...
392-end;
455+ intAnz: Integer;
456+ begin
457+ ...
458+ intAnz := varDokument.Bookmarks.Count;
459+ ...
460+ end;
393461```
394462
395-==Formularfelder==\
396-===In ein Formularfeld schreiben===
463+
397464
398-``` pascal
465+## Formularfelder
466+
467+
468+
469+### In ein Formularfeld schreiben
470+```
399471begin
400- ...
401- varWdApp.ActiveDocument.FormFields.Item('Text1').Result := 'Versuch'; // schreibt in ein Formularfeld
402- varWdApp.ActiveDocument.FormFields.Item('Text1').Result := ''; // leert ein Formularfeld
403- ...
472+ ...
473+ varWdApp.ActiveDocument.FormFields.Item('Text1').Result := 'Versuch'; // schreibt in ein Formularfeld
474+ varWdApp.ActiveDocument.FormFields.Item('Text1').Result := ''; // leert ein Formularfeld
475+ ...
404476```
405477
406-===Ein Formularfeld auslesen===
478+
407479
408-``` pascal
480+### Ein Formularfeld auslesen
481+```
409482var
410- strText: String;
411-begin
412- ...
413- strText := varWdApp.ActiveDocument.FormFields.Item('Text2').Result; // liest ein Formularfeld aus
414- ...
415-end;
483+ strText: String;
484+ begin
485+ ...
486+ strText := varWdApp.ActiveDocument.FormFields.Item('Text2').Result; // liest ein Formularfeld aus
487+ ...
488+ end;
416489```
417490
418491## Tabellen
419492
420-===Speicher für die Tabellensteuerung reservieren===
493+
421494
422-``` pascal
495+### Speicher für die Tabellensteuerung reservieren
496+```
423497var
424- varTabelle: oleVariant;
498+ varTabelle: oleVariant;
425499```
426500
427-===Arbeiten mit neuen Tabellen===\
428-====Variable initialisieren und Tabelle anlegen====
501+
429502
430-``` pascal
503+### Arbeiten mit neuen Tabellen
504+
505+
506+
507+#### Variable initialisieren und Tabelle anlegen
508+```
431509begin
432- ...
433- varTabelle := varDokument.Tables.Add(varWdApp.Selection.Range, 5, 3);
434- ...
435-end;
510+ ...
511+ varTabelle := varDokument.Tables.Add(varWdApp.Selection.Range, 5, 3);
512+ ...
513+ end;
436514```
437515
438-====Die neu angelegte Tabelle füllen====
516+
439517
440-``` pascal
518+#### Die neu angelegte Tabelle füllen
519+```
441520begin
442- ...
443- varTabelle.Cell(1, 1).Range.Text := 'Januar';
444- varTabelle.Cell(1, 2).Range.Text := 'Februar';
445- varTabelle.Cell(1, 3).Range.Text := UTF8ToUTF16('März');
446- ...
447-end;
521+ ...
522+ varTabelle.Cell(1, 1).Range.Text := 'Januar';
523+ varTabelle.Cell(1, 2).Range.Text := 'Februar';
524+ varTabelle.Cell(1, 3).Range.Text := UTF8ToUTF16('März');
525+ ...
526+ end;
448527```
449528
450-===Arbeiten mit vorhandenen Tabellen===
529+
451530
452-``` pascal
531+### Arbeiten mit vorhandenen Tabellen
532+```
453533var
454- intAnz: Integer;
455-begin
456- ...
457- varDokument.Tables.Item(1).Cell(2, 2).Range.Text:='Hallo'; // fügt in einen Wert in eine Zelle ein
458- varDokument.Tables.Item(1).Rows.Add(); // fügt am Ende der Tabelle eine Zeile an
459- intAnz:=varDokument.Tables.Item(1).Rows.Count; // ermittelt die Anzahl der Zeilen
460- ...
461-end;
534+ intAnz: Integer;
535+ begin
536+ ...
537+ varDokument.Tables.Item(1).Cell(2, 2).Range.Text:='Hallo'; // fügt in einen Wert in eine Zelle ein
538+ varDokument.Tables.Item(1).Rows.Add(); // fügt am Ende der Tabelle eine Zeile an
539+ intAnz:=varDokument.Tables.Item(1).Rows.Count; // ermittelt die Anzahl der Zeilen
540+ ...
541+ end;
462542```
463543
464-===Tabellenvariable wieder freigeben===
544+
465545
466-``` pascal
546+### Tabellenvariable wieder freigeben
547+```
467548begin
468- ...
469- varTabelle := Unassigned;
470- ...
471-end;
549+ ...
550+ varTabelle := Unassigned;
551+ ...
552+ end;
472553```
473554
474-=Auszug aus den Wordkonstanten=
555+
475556
476-``` pascal
557+# Auszug aus den Wordkonstanten
558+```
477559unit uWdConst;
478-
479-interface
480-
481-const
482-// Klasse WdGoToItem
483-wdGoToBookmark = -1;
484-wdGoToComment = 6;
485-wdGoToEndnote = 5;
486-wdGoToEquation = 10;
487-wdGoToField = 7;
488-wdGoToFootnote = 4;
489-wdGoToGrammaticalError = 14;
490-wdGoToGraphic = 8;
491-wdGoToHeading = 11;
492-wdGoToLine = 3;
493-wdGoToObject = 9;
494-wdGoToPage = 1;
495-wdGoToPercent = 12;
496-wdGoToProofreadingError = 15;
497-wdGoToSection = 0;
498-wdGoToSpellingError = 13;
499-wdGoToTable = 2;
500-
501-// Klasse wdParagraphAlignment
502-wdAlignParagraphCenter = 1;
503-wdAlignParagraphDistribute = 4;
504-wdAlignParagraphJustify = 3;
505-wdAlignParagraphJustifyHi = 7;
506-wdAlignParagraphJustifyLow = 8;
507-wdAlignParagraphJustifyMed = 5;
508-wdAlignParagraphLeft = 0;
509-wdAlignParagraphRight = 2;
510-wdAlignParagraphThaiJustify = 9;
511-
512-//Klasse wdRowAlignment
513-wdAlignRowCenter = 1;
514-wdAlignRowLeft = 0;
515-wdAlignRowRight = 2;
516-
517-// Klasse wdOpenFormat
518-wdOpenFormatAllWord = 6;
519-wdOpenFormatAuto = 0;
520-wdOpenFormatDocument = 1;
521-wdOpenFormatEncodedText = 5;
522-wdOpenFormatRTF = 3;
523-wdOpenFormatTemplate = 2;
524-wdOpenFormatText = 4;
525-wdOpenFormatUnicodeText = 5;
526-wdOpenFormatWebPages = 7;
527-wdOpenFormatXML = 8;
528-
529-// Klasse WdSaveOptions
530-wdDoNotSaveChanges = 0;
531-wdPromptToSaveChanges = -2;
532-wdSaveChanges = -1;
533-
534-// Klasse WdCountry
535-wdArgentina = 54;
536-wdBrazil = 55;
537-wdCanada = 2;
538-wdChile = 56;
539-wdChina = 86;
540-wdDenmark = 45;
541-wdFinland = 358;
542-wdFrance = 33;
543-wdGermany = 49;
544-wdIceland = 345;
545-wdItaly = 39;
546-wdJapan = 81;
547-wdKorea = 82;
548-wdLatinAmerica = 3;
549-wdMexico = 52;
550-wdNetherlands = 31;
551-wdNorway = 47;
552-wdPeru = 51;
553-wdSpain = 34;
554-wdSweden = 46;
555-wdTaiwan = 886;
556-wdUK = 44;
557-wdUS = 1;
558-wdVenezuela = 58;
559-
560-// Klasse WdUnits
561-wdCell = 12;
562-wdCharacter = 1;
563-wdCharacterFormatting = 13;
564-wdColumn = 9;
565-wdItem = 16;
566-wdLine = 5;
567-wdParagraph = 4;
568-wdParagraphFormatting = 14;
569-wdRow = 10;
570-wdScreen = 7;
571-wdSection = 8;
572-wdSentence = 3;
573-wdStory = 6;
574-wdTable = 15;
575-wdWindow = 11;
576-wdWord = 2;
577-
578-implementation
579-
580-end.
560+
561+ interface
562+
563+ const
564+ // Klasse WdGoToItem
565+ wdGoToBookmark = -1;
566+ wdGoToComment = 6;
567+ wdGoToEndnote = 5;
568+ wdGoToEquation = 10;
569+ wdGoToField = 7;
570+ wdGoToFootnote = 4;
571+ wdGoToGrammaticalError = 14;
572+ wdGoToGraphic = 8;
573+ wdGoToHeading = 11;
574+ wdGoToLine = 3;
575+ wdGoToObject = 9;
576+ wdGoToPage = 1;
577+ wdGoToPercent = 12;
578+ wdGoToProofreadingError = 15;
579+ wdGoToSection = 0;
580+ wdGoToSpellingError = 13;
581+ wdGoToTable = 2;
582+
583+ // Klasse wdParagraphAlignment
584+ wdAlignParagraphCenter = 1;
585+ wdAlignParagraphDistribute = 4;
586+ wdAlignParagraphJustify = 3;
587+ wdAlignParagraphJustifyHi = 7;
588+ wdAlignParagraphJustifyLow = 8;
589+ wdAlignParagraphJustifyMed = 5;
590+ wdAlignParagraphLeft = 0;
591+ wdAlignParagraphRight = 2;
592+ wdAlignParagraphThaiJustify = 9;
593+
594+ //Klasse wdRowAlignment
595+ wdAlignRowCenter = 1;
596+ wdAlignRowLeft = 0;
597+ wdAlignRowRight = 2;
598+
599+ // Klasse wdOpenFormat
600+ wdOpenFormatAllWord = 6;
601+ wdOpenFormatAuto = 0;
602+ wdOpenFormatDocument = 1;
603+ wdOpenFormatEncodedText = 5;
604+ wdOpenFormatRTF = 3;
605+ wdOpenFormatTemplate = 2;
606+ wdOpenFormatText = 4;
607+ wdOpenFormatUnicodeText = 5;
608+ wdOpenFormatWebPages = 7;
609+ wdOpenFormatXML = 8;
610+
611+ // Klasse WdSaveOptions
612+ wdDoNotSaveChanges = 0;
613+ wdPromptToSaveChanges = -2;
614+ wdSaveChanges = -1;
615+
616+ // Klasse WdCountry
617+ wdArgentina = 54;
618+ wdBrazil = 55;
619+ wdCanada = 2;
620+ wdChile = 56;
621+ wdChina = 86;
622+ wdDenmark = 45;
623+ wdFinland = 358;
624+ wdFrance = 33;
625+ wdGermany = 49;
626+ wdIceland = 345;
627+ wdItaly = 39;
628+ wdJapan = 81;
629+ wdKorea = 82;
630+ wdLatinAmerica = 3;
631+ wdMexico = 52;
632+ wdNetherlands = 31;
633+ wdNorway = 47;
634+ wdPeru = 51;
635+ wdSpain = 34;
636+ wdSweden = 46;
637+ wdTaiwan = 886;
638+ wdUK = 44;
639+ wdUS = 1;
640+ wdVenezuela = 58;
641+
642+ // Klasse WdUnits
643+ wdCell = 12;
644+ wdCharacter = 1;
645+ wdCharacterFormatting = 13;
646+ wdColumn = 9;
647+ wdItem = 16;
648+ wdLine = 5;
649+ wdParagraph = 4;
650+ wdParagraphFormatting = 14;
651+ wdRow = 10;
652+ wdScreen = 7;
653+ wdSection = 8;
654+ wdSentence = 3;
655+ wdStory = 6;
656+ wdTable = 15;
657+ wdWindow = 11;
658+ wdWord = 2;
659+
660+ implementation
661+
662+ end.
581663```
582664
583665---
584-*From the Free Pascal wiki, page "WordAutomation/de", as it stood on 2022-09-11 after a change by Wp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*
666+*From the Free Pascal wiki, page "WordAutomation/de", as the Internet Archive kept it on 2025-03-20, last changed on 2022-09-12. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history