Sign in Join
Wiki copytemporary

WriterAutomation/de: what changed

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

Title: WriterAutomation/de

OldNewLine
1+Zurück zur [[Office Automation/de|Office Automation]].\
2+
3+# Writer
4+
5+## Benötigte Units
6+
7+``` pascal
8+uses
9+ ..., ComObj, Variants, LazUtf8, ...;
10+```
11+
12+# Aufbau einer Steuerung für die Anwendung Writer
13+
14+## Erstellen eines neuen Dokuments und es unter einem neuen Namen speichern
15+
16+``` pascal
17+
18+ ...
19+var
20+ // Reservieren des Speichers
21+ varOfficeApp: olevariant;
22+ varDesktop: olevariant;
23+ varLoadParams: olevariant;
24+ varDokument: olevariant;
25+ varBookmark: olevariant;
26+ varTextCursor: olevariant;
27+ strDateiname: shortstring; // nur Literale und Shortstrings sind automatisierbar
28+
29+begin
30+ // Erstellt das OleObjekt und erstellt den Zeiger darauf
31+ varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
32+
33+ // Erstellt den Zeiger auf den Officedesktop
34+ varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
35+
36+ // Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
37+ varLoadParams := VarArrayCreate([0, -1], varVariant);
38+
39+ // Erstellt ein neues (leeres) Dokument (Workbook) und setzt den Zeiger darauf
40+ varDokument := varDesktop.LoadComponentFromURL('private:factory/swriter', '_blank', 0, varLoadParams);
41+
42+ ...
43+
44+ // Variante 1:
45+ // Speichert das Dokument unter einem neuen Namen
46+ varDokument.StoreAsURL('file:///D:/test.odt', varLoadParams);
47+
48+ // Variante 2:
49+ // Speichert das Dokument mit Umlauten im neuen Dateinamen
50+ strDateiname := 'file:///D:/' + Utf8ToSys('täst.odt');
51+ varDokument.StoreAsURL(strDateiname, varLoadParams);
52+
53+ // Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
54+ // unter Umständen Star-, Open- und LibreOffice ab.
55+ // Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
56+ Sleep(1000);
57+
58+ // Schliesst das Dokument
59+ varDokument.close(True);
60+
61+ // Beendet die Anwendung
62+ varDesktop.terminate;
63+
64+ // Freigabe des Speichers
65+ varDesktop := UnAssigned;
66+ varDokument := UnAssigned;
67+ varLoadParams := UnAssigned;
68+ varOfficeApp := UnAssigned;
69+end;
70+```
71+
72+## Öffnen eines vorhandenen Dokuments und Speichern des Dokuments
73+
74+``` pascal
75+ ...
76+var
77+ // Reservieren des Speichers
78+ varOfficeApp: olevariant;
79+ varDesktop: olevariant;
80+ varLoadParams: olevariant;
81+ varUrl: variant;
82+ varDokument: olevariant;
83+
84+begin
85+ // Erstellt das OleObjekt und erstellt den Zeiger darauf
86+ varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
87+
88+ // Erstellt den Zeiger auf den Officedesktop
89+ varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
90+
91+ // Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
92+ varLoadParams := VarArrayCreate([0, -1], varVariant);
93+
94+ // Öffnet ein neues vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
95+ varDokument := varDesktop.LoadComponentFromURL('file:///D:/Test.odt', '_blank', 0, varLoadParams);
96+
97+ // Speichert das Dokument
98+ varDokument.Store;
99+
100+ ...
101+
102+ // Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
103+ // unter Umständen Star-, Open- und LibreOffice ab.
104+ // Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
105+ Sleep(1000);
106+
107+ // Schliesst das Dokument
108+ varDokument.Close(True);
109+
110+ //Beendet die Anwendung
111+ varDesktop.terminate;
112+
113+ // Freigabe des Speichers
114+ varDesktop := UnAssigned;
115+ varDokument := UnAssigned;
116+ varLoadParams := UnAssigned;
117+ varOfficeApp := UnAssigned;
118+end;
119+```
120+
121+## Öffnen eines vorhandenen Dokuments und das Verwenden von Bookmarks
122+
123+Bevor mit Bookmarks gearbeitet werden kann muss ein Office-Dokument als Vorlage erstellt werden.
124+
125+Diese Vorlage müssen Sie an den entsprechenden Stellen mit den benötigten Bookmarks versehen.
126+
127+Beispiel:
128+
129+``` pascal
130+ ...
131+var
132+ // Reservieren des Speichers
133+ varOfficeApp: olevariant;
134+ varDesktop: olevariant;
135+ varLoadParams: olevariant;
136+ varDokument: olevariant;
137+ varBookmark: olevariant;
138+ varTextCursor: olevariant;
139+
140+ // Benötigte Hilfsvariable
141+ varUebergabe: variant;
142+
143+begin
144+
145+ // Erstellt das OleObjekt und erstellt den Zeiger darauf
146+ varOfficeApp := CreateOleObject('com.sun.star.ServiceManager');
147+
148+ // Erstellt den Zeiger auf den Officedesktop
149+ varDesktop := varOfficeApp.createInstance('com.sun.star.frame.Desktop');
150+
151+ // Erstellt ein leeres Array das für die Dokumentenerstellung benötigt wird
152+ varLoadParams := VarArrayCreate([0, -1], varVariant);
153+
154+ // Öffnet ein neues vorhandenes Dokument (Workbook) und setzt den Zeiger darauf
155+ varDokument := varDesktop.LoadComponentFromURL('file:///D:/Test.odt', '_blank', 0, varLoadParams);
156+
157+ ...
158+
159+ // Holt die Adresse der Bookmark
160+ varBookmark := varDokument.BookMarks.getByName('txtTest');
161+
162+ // Bestimmt die Adresse des Cursors
163+ varTextCursor := varBookmark.Anchor.Text.createTextCursorByRange(varBookmark.Anchor);
164+
165+ // Weist der Hilfsvariablen einen UTF16 codierten Text zu
166+ // Der Text sollte immer UTF16 codiert sein, das die Office-Anwendungen nur UTF16 beherrschen
167+ varUebergabe := Utf8ToUtf16('Hallo Welt');
168+
169+ // Übergibt die Hilfsvariable an den textCursor der Office-Anwendung
170+ varTextCursor.SetString(varUebergabe);
171+
172+ ...
173+
174+ // Speichert das Dokument
175+ varDokument.store;
176+
177+ // Wird nicht zwischen dem Speichern und dem schliessen des Dokuments gewartet, dann stürzen
178+ // unter Umständen Star-, Open- und LibreOffice ab.
179+ // Beim Speichern auf Notebooks oder in Netzwerken empfehlen sich höhere Wartezeiten.
180+ Sleep(1000);
181+
182+ // Schliesst das Dokument
183+ varDokument.Close(True);
184+
185+ // Beendet die Anwendung
186+ varDesktop.terminate;
187+
188+ // Freigabe des Speichers
189+ varUebergabe := Unassigned;
190+ varTextCursor := Unassigned;
191+ varBookmark := Unassigned;
192+ varDokument := Unassigned;
193+ varLoadParams := Unassigned;
194+ varDesktop := Unassigned;
195+ varOfficeApp := Unassigned;
196+end;
197+```
198+
199+---
200+*From the Free Pascal wiki, page "WriterAutomation/de", as it stood on 2020-03-04 after a change by Trev, 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).*

Back to history