Difference between revisions of "WordAutomation/de"
m (Fixed syntax highlighting; deleted category included in page template) |
|||
(23 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
{{WordAutomation}} | {{WordAutomation}} | ||
+ | <br> | ||
+ | Zurück zur [[Office Automation/de|Office Automation]].<br> | ||
<br> | <br> | ||
__TOC__ | __TOC__ | ||
Line 11: | Line 13: | ||
<br> | <br> | ||
Beispiel:<br> | Beispiel:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
unit | unit | ||
ComObj, lclproc; | ComObj, lclproc; | ||
Line 17: | Line 19: | ||
<br> | <br> | ||
<br> | <br> | ||
− | |||
=Speicherplatz für Word und Worddokument reservieren= | =Speicherplatz für Word und Worddokument reservieren= | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
varWdApp: oleVariant; // Reserviert Speicher für die Programmsteuerung | varWdApp: oleVariant; // Reserviert Speicher für die Programmsteuerung | ||
Line 27: | Line 28: | ||
=Wordsteuerung= | =Wordsteuerung= | ||
==Word OleObjekt erstellen== | ==Word OleObjekt erstellen== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 40: | Line 41: | ||
<br> | <br> | ||
==Word Version ermitteln== | ==Word Version ermitteln== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 49: | Line 50: | ||
<br> | <br> | ||
==Word beenden und Speicher freigeben== | ==Word beenden und Speicher freigeben== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 60: | Line 61: | ||
==Die Sichtbarkeit von Word steuern== | ==Die Sichtbarkeit von Word steuern== | ||
Eine unsichtbare Anwendung verhindert während der Automatisierung das Flackern des Bildschirms.<br> | Eine unsichtbare Anwendung verhindert während der Automatisierung das Flackern des Bildschirms.<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 69: | Line 70: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | |||
==Word Screenupdating (Bildschirmaktualisierung)== | ==Word Screenupdating (Bildschirmaktualisierung)== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 77: | Line 77: | ||
// und erhöht die Verarbeitungsgeschwindigkeit. | // und erhöht die Verarbeitungsgeschwindigkeit. | ||
varWdApp.ScreenUpdating := True; // schaltet die Bildschirmaktualisierung wieder ein. | varWdApp.ScreenUpdating := True; // schaltet die Bildschirmaktualisierung wieder ein. | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ==Sprache der Wordinstallation ermittlen== | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | begin | ||
+ | ... | ||
+ | if varWdApp.System.Country <> wdGermany then ... // prüft, ob die Wordinstallation nicht Deutsch ist. | ||
... | ... | ||
end; | end; | ||
Line 82: | Line 91: | ||
<br> | <br> | ||
=Text des Dokuments bearbeiten= | =Text des Dokuments bearbeiten= | ||
− | ==Worddokument erstellen== | + | ==Neues Worddokument erstellen== |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 91: | Line 100: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | ==Worddokument öffnen== | + | ==Vorhandenes Worddokument öffnen== |
Es gibt mehrere Möglichkeiten ein Worddokument zu öffnen.<br> | Es gibt mehrere Möglichkeiten ein Worddokument zu öffnen.<br> | ||
<br> | <br> | ||
Beispiel 1:<br> | Beispiel 1:<br> | ||
Ein Worddokument mit mehreren Parametern öffnen<br> | Ein Worddokument mit mehreren Parametern öffnen<br> | ||
− | Alle Parameter | + | Alle Parameter außer Parameter 1 sind optional<br> |
# Parameter: Pfadname und Datename<br> | # Parameter: Pfadname und Datename<br> | ||
#Parameter: False, wenn die Datei nicht in das aktuelle Wordformat konvertiert werden soll<br> | #Parameter: False, wenn die Datei nicht in das aktuelle Wordformat konvertiert werden soll<br> | ||
Line 107: | Line 116: | ||
#Parameter:<br> | #Parameter:<br> | ||
#Parameter: Das Dateikonvertierungsprogramm, das zum Öffnen des Dokuments verwendet werden soll. Der Standardwert ist wdOpenFormatAuto | #Parameter: Das Dateikonvertierungsprogramm, das zum Öffnen des Dokuments verwendet werden soll. Der Standardwert ist wdOpenFormatAuto | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 120: | Line 129: | ||
Beispiel 2:<br> | Beispiel 2:<br> | ||
Ein Worddokument mit einem Umlaut usw. im Dateinamen öffnen<br> | Ein Worddokument mit einem Umlaut usw. im Dateinamen öffnen<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 129: | Line 138: | ||
<br> | <br> | ||
Beispiel 3:<br> | Beispiel 3:<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 141: | Line 150: | ||
==Worddokument aktivieren== | ==Worddokument aktivieren== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 149: | Line 158: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | ==Text Cursor setzen== | |
+ | <syntaxhighlight lang=pascal> | ||
+ | begin | ||
+ | ... | ||
+ | varWdApp.Selection.EndKey(wdStory); // Cursor bewegt sich zum Ende des Dokumentes | ||
+ | varWdApp.Selection.HomeKey(wdStory); // Cursor bewegt sich zum Anfang des Dokumentes | ||
+ | varWdApp.Selection.MoveRight(wdWord); // Cursor am Anfang des nächsten Wortes | ||
+ | varWdApp.Selection.MoveLeft(wdCharacter); // Cursor wird um ein Zeichen nach Links versetzt | ||
+ | varWdApp.Selection.Delete(wdCharacter); // Löscht ein Zeichen rechts vom Cursor | ||
+ | varWdApp.Selection.MoveDown(wdParagraph); // Cursor bewegt sich zum Anfang des nächsten Abschnitts | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
==Text in ein Worddokument einfügen== | ==Text in ein Worddokument einfügen== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
− | varWdApp.Selection.TypeText( | + | varWdApp.Selection.TypeText(UTF8Decode('Neuer Text')); |
− | varWdApp.Selection.TypeText( | + | varWdApp.Selection.TypeText(UTF8Decode('Zusätzlicher Text')); // Benötigt die Unit lclproc für die korrekte |
− | + | // Umwandlung der Umlaute | |
varWdApp.Selection.InsertAfter('Test'); // fügt im Worddokument nach der Cursorposition diesen Text ein | varWdApp.Selection.InsertAfter('Test'); // fügt im Worddokument nach der Cursorposition diesen Text ein | ||
Line 170: | Line 192: | ||
Beispiel 1:<br> | Beispiel 1:<br> | ||
Ein Worddokument ohne Besonderheiten im Namen speichern.<br> | Ein Worddokument ohne Besonderheiten im Namen speichern.<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 181: | Line 203: | ||
Beispiel 2:<br> | Beispiel 2:<br> | ||
Ein Worddokment mit Umlaut im Namen speichern.<br> | Ein Worddokment mit Umlaut im Namen speichern.<br> | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 190: | Line 212: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | + | ==Worddokument schliessen und Speicher freigeben== | |
− | ==Worddokument schliessen== | + | <syntaxhighlight lang=pascal> |
− | <syntaxhighlight> | ||
begin | begin | ||
... | ... | ||
− | varDokument.Close; | + | varDokument.Close; // Schliesst das Worddokument |
+ | varDokument := Unassigned; // Gibt den Speicher für die Programmsteuerung frei | ||
... | ... | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | ==Worddokument | + | ==Worddokument Eigenschaften festlegen== |
− | <syntaxhighlight> | + | Alle Eigenschaften des Worddokumentes können über ihren englischen Namen angesprochen werden.<br> |
+ | <syntaxhighlight lang=pascal> | ||
begin | begin | ||
... | ... | ||
− | varDokument := | + | varDokument.BuiltInDocumentProperties['Title'].Value := 'Testdokument'; // fügt den Dokumententitel ein |
+ | varDokument.BuiltInDocumentProperties['Subject'].Value := 'Testdokumente'; // fügt das Thema ein | ||
+ | varDokument.BuiltInDocumentProperties['Author'].Value := 'Testuser'; // fügt den Ersteller ein | ||
+ | varDokument.BuiltInDocumentProperties['Manager'].Value := 'Testmanager'; // fügt den verantwortlichen Manager ein | ||
+ | varDokument.BuiltInDocumentProperties['Company'].Value := 'Testfirma'; // fügt die Firma ein | ||
+ | varDokument.BuiltInDocumentProperties['Category'].Value := 'Automatisationsbeispiele'; // fügt die Kategorie ein | ||
+ | varDokument.BuiltInDocumentProperties['Comments'].Value := 'Erstes Muster'; // fügt einen Kommentar ein | ||
... | ... | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | <br> | ||
==Absatz== | ==Absatz== | ||
<br> | <br> | ||
===Absatz ausrichten=== | ===Absatz ausrichten=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 222: | Line 252: | ||
<br> | <br> | ||
===Absatz (Zeilenumbruch) einfügen=== | ===Absatz (Zeilenumbruch) einfügen=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 235: | Line 265: | ||
==Text formatieren== | ==Text formatieren== | ||
Der Text wird an der Cursorposition formatiert. | Der Text wird an der Cursorposition formatiert. | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 251: | Line 281: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | |||
==Bookmarks== | ==Bookmarks== | ||
<br> | <br> | ||
===Speicher für die Bookmarksteuerung reservieren=== | ===Speicher für die Bookmarksteuerung reservieren=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
varBookmark: oleVariant; // Reserviert Speicher für die Steuerung der Bookmark | varBookmark: oleVariant; // Reserviert Speicher für die Steuerung der Bookmark | ||
Line 261: | Line 290: | ||
<br> | <br> | ||
===Variable initialisieren=== | ===Variable initialisieren=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 274: | Line 303: | ||
<br> | <br> | ||
===An die Anfangsposition der Bookmark schreiben=== | ===An die Anfangsposition der Bookmark schreiben=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 284: | Line 313: | ||
<br> | <br> | ||
===Bookmark löschen=== | ===Bookmark löschen=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 294: | Line 323: | ||
end; | end; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | <br> | ||
===Variable für Bookmarksteuerung freigeben=== | ===Variable für Bookmarksteuerung freigeben=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 303: | Line 333: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
+ | ===Prüfen, ob eine bestimmte Bookmark vorhanden ist=== | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | begin | ||
+ | ... | ||
+ | if varDokument.Bookmarks.Exists('Text1') then ... ; //Prüft, ob eine Bookmark vorhanden ist | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ===Bookmarks zählen=== | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | var | ||
+ | intAnz: Integer; | ||
+ | begin | ||
+ | ... | ||
+ | intAnz := varDokument.Bookmarks.Count; | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ==Formularfelder== | ||
+ | <br> | ||
+ | ===In ein Formularfeld schreiben=== | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | begin | ||
+ | ... | ||
+ | varWdApp.ActiveDocument.FormFields.Item('Text1').Result := 'Versuch'; // schreibt in ein Formularfeld | ||
+ | varWdApp.ActiveDocument.FormFields.Item('Text1').Result := ''; // leert ein Formularfeld | ||
+ | ... | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ===Ein Formularfeld auslesen=== | ||
+ | <syntaxhighlight lang=pascal> | ||
+ | var | ||
+ | strText: String; | ||
+ | begin | ||
+ | ... | ||
+ | strText := varWdApp.ActiveDocument.FormFields.Item('Text2').Result; // liest ein Formularfeld aus | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
==Tabellen== | ==Tabellen== | ||
<br> | <br> | ||
===Speicher für die Tabellensteuerung reservieren=== | ===Speicher für die Tabellensteuerung reservieren=== | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
var | var | ||
varTabelle: oleVariant; | varTabelle: oleVariant; | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | ===Variable initialisieren und Tabelle anlegen=== | + | ===Arbeiten mit neuen Tabellen=== |
− | <syntaxhighlight> | + | <br> |
+ | ====Variable initialisieren und Tabelle anlegen==== | ||
+ | <syntaxhighlight lang=pascal> | ||
begin | begin | ||
... | ... | ||
Line 320: | Line 393: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | ===Die neu angelegte Tabelle füllen=== | + | ====Die neu angelegte Tabelle füllen==== |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
begin | begin | ||
... | ... | ||
Line 331: | Line 404: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | === | + | ===Arbeiten mit vorhandenen Tabellen=== |
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
+ | var | ||
+ | intAnz: Integer; | ||
+ | begin | ||
+ | ... | ||
+ | varDokument.Tables.Item(1).Cell(2, 2).Range.Text:='Hallo'; // fügt in einen Wert in eine Zelle ein | ||
+ | varDokument.Tables.Item(1).Rows.Add(); // fügt am Ende der Tabelle eine Zeile an | ||
+ | intAnz:=varDokument.Tables.Item(1).Rows.Count; // ermittelt die Anzahl der Zeilen | ||
+ | ... | ||
+ | end; | ||
+ | </syntaxhighlight> | ||
+ | <br> | ||
+ | ===Tabellenvariable wieder freigeben=== | ||
+ | <syntaxhighlight lang=pascal> | ||
begin | begin | ||
... | ... | ||
Line 340: | Line 426: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br> | <br> | ||
− | |||
=Auszug aus den Wordkonstanten= | =Auszug aus den Wordkonstanten= | ||
− | <syntaxhighlight> | + | <syntaxhighlight lang=pascal> |
unit uWdConst; | unit uWdConst; | ||
Line 394: | Line 479: | ||
wdOpenFormatWebPages = 7; | wdOpenFormatWebPages = 7; | ||
wdOpenFormatXML = 8; | wdOpenFormatXML = 8; | ||
+ | |||
+ | // Klasse WdSaveOptions | ||
+ | wdDoNotSaveChanges = 0; | ||
+ | wdPromptToSaveChanges = -2; | ||
+ | wdSaveChanges = -1; | ||
+ | |||
+ | // Klasse WdCountry | ||
+ | wdArgentina = 54; | ||
+ | wdBrazil = 55; | ||
+ | wdCanada = 2; | ||
+ | wdChile = 56; | ||
+ | wdChina = 86; | ||
+ | wdDenmark = 45; | ||
+ | wdFinland = 358; | ||
+ | wdFrance = 33; | ||
+ | wdGermany = 49; | ||
+ | wdIceland = 345; | ||
+ | wdItaly = 39; | ||
+ | wdJapan = 81; | ||
+ | wdKorea = 82; | ||
+ | wdLatinAmerica = 3; | ||
+ | wdMexico = 52; | ||
+ | wdNetherlands = 31; | ||
+ | wdNorway = 47; | ||
+ | wdPeru = 51; | ||
+ | wdSpain = 34; | ||
+ | wdSweden = 46; | ||
+ | wdTaiwan = 886; | ||
+ | wdUK = 44; | ||
+ | wdUS = 1; | ||
+ | wdVenezuela = 58; | ||
+ | |||
+ | // Klasse WdUnits | ||
+ | wdCell = 12; | ||
+ | wdCharacter = 1; | ||
+ | wdCharacterFormatting = 13; | ||
+ | wdColumn = 9; | ||
+ | wdItem = 16; | ||
+ | wdLine = 5; | ||
+ | wdParagraph = 4; | ||
+ | wdParagraphFormatting = 14; | ||
+ | wdRow = 10; | ||
+ | wdScreen = 7; | ||
+ | wdSection = 8; | ||
+ | wdSentence = 3; | ||
+ | wdStory = 6; | ||
+ | wdTable = 15; | ||
+ | wdWindow = 11; | ||
+ | wdWord = 2; | ||
implementation | implementation | ||
Line 399: | Line 533: | ||
end. | end. | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Revision as of 12:25, 4 March 2020
Dieser Artikel behandelt ausschließlich Windows.
Siehe auch: Multiplatform Programming Guide/de
│
Deutsch (de) │
Zurück zur Office Automation.
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.
Wenn man als Automatisierungsobjekt nicht zwingend auf MS Word angewiesen ist, dann sollte man für die Automatisierung MS Excel nehmen.
Wenn Sie Umlaute usw. verwenden, dann sollten Sie wissen, dass Word UTF16 codierte Strings verwendet.
Für die Oleautomation muss die Unit ComObj eingebunden werden.
Wenn Sie mit Umlauten usw. arbeiten dann brauchen Sie für das Stringcasting die Unit lclproc.
Beispiel:
unit
ComObj, lclproc;
Speicherplatz für Word und Worddokument reservieren
var
varWdApp: oleVariant; // Reserviert Speicher für die Programmsteuerung
varDokument: oleVariant; // Reserviert Speicher für die Steuerung des Worddokuments
Wordsteuerung
Word OleObjekt erstellen
begin
...
try
varWdApp := CreateOleObject('Word.Application'); // erstellt das Wordobjekt
except
WriteLn('MS Word kann nicht gestartet werden.'); // Fehlerbehandlung
end;
...
end;
Word Version ermitteln
begin
...
ShowMessage(varWdApp.Version);
...
end;
Word beenden und Speicher freigeben
begin
...
varWdApp.Quit;
varWdApp := Unassigned;
...
end;
Die Sichtbarkeit von Word steuern
Eine unsichtbare Anwendung verhindert während der Automatisierung das Flackern des Bildschirms.
begin
...
varWdApp.Visible := False; // macht Word unsichtbar
varWdApp.Visible := True; // macht Word sichtbar
...
end;
Word Screenupdating (Bildschirmaktualisierung)
begin
...
varWdApp.ScreenUpdating := False; // schaltet bei einem sichtbaren Word das Flackern des Bildschirms aus
// und erhöht die Verarbeitungsgeschwindigkeit.
varWdApp.ScreenUpdating := True; // schaltet die Bildschirmaktualisierung wieder ein.
...
end;
Sprache der Wordinstallation ermittlen
begin
...
if varWdApp.System.Country <> wdGermany then ... // prüft, ob die Wordinstallation nicht Deutsch ist.
...
end;
Text des Dokuments bearbeiten
Neues Worddokument erstellen
begin
...
varDokument := varWdApp.Documents.Add; // fügt ein neues 'leeres' Worddokument hinzu
...
end;
Vorhandenes Worddokument öffnen
Es gibt mehrere Möglichkeiten ein Worddokument zu öffnen.
Beispiel 1:
Ein Worddokument mit mehreren Parametern öffnen
Alle Parameter außer Parameter 1 sind optional
- Parameter: Pfadname und Datename
- Parameter: False, wenn die Datei nicht in das aktuelle Wordformat konvertiert werden soll
- Parameter: True, wenn die Datei schreibgeschützt geöffnet werden soll
- Parameter: True, wenn der Name der Datei der Liste der zuletzt geöffneten Dateien hizugefügt werden soll
- Parameter: Das Kennwort (Passwort) zum öffnen der Vorlage
- Parameter:
- Parameter: Das Kennwort (Passwort) zum Speichern des Dokuments
- Parameter: Das Kennwort (Passwort) zum Speichern der Vorlage
- Parameter:
- Parameter: Das Dateikonvertierungsprogramm, das zum Öffnen des Dokuments verwendet werden soll. Der Standardwert ist wdOpenFormatAuto
begin
...
varDokument := varWdApp.Documents.Open(FileName, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam, EmptyParam, EmptyParam,
EmptyParam);
...
end;
Beispiel 2:
Ein Worddokument mit einem Umlaut usw. im Dateinamen öffnen
begin
...
varDokument := varWdApp.Documents.Open(UTF8ToUTF16('D:\Üben.doc')); // Öffnet ein Worddokument mit Umlauten usw. im Namen
...
end;
Beispiel 3:
begin
...
varDokument := varWdApp.Documents.Open(strPfad); // öffnet ein Worddokument mit Hilfe einer Variablen
// (Pfad: maximal 255 Zeichen, Alphanumerisch)
varDokument := varWdApp.Documents.Open('D:\Test.doc'); // öffnet ein Worddokument mit festem Pfad hinzu
...
end;
Worddokument aktivieren
begin
...
varDokument.Activate; //aktiviert das Worddokument
...
end;
Text Cursor setzen
begin
...
varWdApp.Selection.EndKey(wdStory); // Cursor bewegt sich zum Ende des Dokumentes
varWdApp.Selection.HomeKey(wdStory); // Cursor bewegt sich zum Anfang des Dokumentes
varWdApp.Selection.MoveRight(wdWord); // Cursor am Anfang des nächsten Wortes
varWdApp.Selection.MoveLeft(wdCharacter); // Cursor wird um ein Zeichen nach Links versetzt
varWdApp.Selection.Delete(wdCharacter); // Löscht ein Zeichen rechts vom Cursor
varWdApp.Selection.MoveDown(wdParagraph); // Cursor bewegt sich zum Anfang des nächsten Abschnitts
...
end;
Text in ein Worddokument einfügen
begin
...
varWdApp.Selection.TypeText(UTF8Decode('Neuer Text'));
varWdApp.Selection.TypeText(UTF8Decode('Zusätzlicher Text')); // Benötigt die Unit lclproc für die korrekte
// Umwandlung der Umlaute
varWdApp.Selection.InsertAfter('Test'); // fügt im Worddokument nach der Cursorposition diesen Text ein
// die Cursorpsition befindet sich bei einem frisch geöffneten Worddokument
// immer am Anfang des Dokuments
...
end;
Worddokument speichern
Beispiel 1:
Ein Worddokument ohne Besonderheiten im Namen speichern.
begin
...
varDokument.SaveAs('D:\Test.doc'); // Speichert das Worddokument unter einem neuen Namen
varDokument.Save; // Speichert das Worddokument unter seinem aktuellen Namen
...
end;
Beispiel 2:
Ein Worddokment mit Umlaut im Namen speichern.
begin
...
varDokument.SaveAs(UTF8ToUTF16('D:\Üben.doc')); // Speichert das Worddokument (mit Umlauten usw. im Namen)
// unter einem neuen Namen ab
...
end;
Worddokument schliessen und Speicher freigeben
begin
...
varDokument.Close; // Schliesst das Worddokument
varDokument := Unassigned; // Gibt den Speicher für die Programmsteuerung frei
...
end;
Worddokument Eigenschaften festlegen
Alle Eigenschaften des Worddokumentes können über ihren englischen Namen angesprochen werden.
begin
...
varDokument.BuiltInDocumentProperties['Title'].Value := 'Testdokument'; // fügt den Dokumententitel ein
varDokument.BuiltInDocumentProperties['Subject'].Value := 'Testdokumente'; // fügt das Thema ein
varDokument.BuiltInDocumentProperties['Author'].Value := 'Testuser'; // fügt den Ersteller ein
varDokument.BuiltInDocumentProperties['Manager'].Value := 'Testmanager'; // fügt den verantwortlichen Manager ein
varDokument.BuiltInDocumentProperties['Company'].Value := 'Testfirma'; // fügt die Firma ein
varDokument.BuiltInDocumentProperties['Category'].Value := 'Automatisationsbeispiele'; // fügt die Kategorie ein
varDokument.BuiltInDocumentProperties['Comments'].Value := 'Erstes Muster'; // fügt einen Kommentar ein
...
end;
Absatz
Absatz ausrichten
begin
...
varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphright; // Ausrichtung am rechten Dokumentrand
varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphLeft; // Ausrichtung am linken Dokumentrand
varWdApp.Selection.ParagraphFormat.Alignment := wdAlignParagraphCenter; // Ausrichtung in der Dokumentmitte
...
end;
Absatz (Zeilenumbruch) einfügen
begin
...
varWdApp.Selection.TypeParagraph; // fügt einen Zeilenumbruch (Absatz) ein
// Alternative
varWdApp.Selection.InsertAfter(String(#13)); // fügt einen Zeilenumbruch im Worddokument ein
varWdApp.Selection.InsertAfter(String(#10)); // fügt einen Zeilenumbruch im Worddokument ein
...
end;
Text formatieren
Der Text wird an der Cursorposition formatiert.
begin
...
varWdApp.Selection.Font.Name := 'Times New Roman'; // Schriftart
varWdApp.Selection.Font.Size := 12; // Schriftgrösse
varWdApp.Selection.Font.Bold := True; // Fettschrift
varWdApp.Selection.Font.Italic := True; // Kursivschrift
varWdApp.Selection.Font.Name := 'Arial'; // Schriftart
varWdApp.Selection.Font.Size := 11; // Schriftgrösse
varWdApp.Selection.Font.Bold := False; // keine Fettschrift
varWdApp.Selection.Font.Italic := False; // keine Kursivschrift
...
end;
Bookmarks
Speicher für die Bookmarksteuerung reservieren
var
varBookmark: oleVariant; // Reserviert Speicher für die Steuerung der Bookmark
Variable initialisieren
begin
...
// Fügt an der Stelle einer Bookmark (Textmarke / Markierung) einen Text ein
varBookmark := varDokument.Bookmarks.Item(2); // Auswahl der zu ersetzenden Bookmark (Markierung) über den Index
// in diesem Fall ist es die erste Bookmark
// Alternative
varBookmark := varDokument.Bookmarks.Item('Test2'); // Auswahl der zu ersetzenden Bookmark (Markierung) über ihren Namen
...
end;
An die Anfangsposition der Bookmark schreiben
begin
...
varBookmark.Range.Text := UTF8ToUTF16('Testeintrag für die Bookmark'); // damit wird an der Position der
// Bookmark der Text eingefügt.
...
end;
Bookmark löschen
begin
...
// Löscht, die ausgewählte Bookmark und nicht den eingefügten Text
varDokument.Bookmarks.Item(1).Delete; // Löscht die Bookmark über einen Index
// Alternative
varDokument.Bookmarks.Item('Test1').Delete; // Löscht die Bookmark über ihren Namen
...
end;
Variable für Bookmarksteuerung freigeben
begin
...
varBookmark := Unassigned;
...
end;
Prüfen, ob eine bestimmte Bookmark vorhanden ist
begin
...
if varDokument.Bookmarks.Exists('Text1') then ... ; //Prüft, ob eine Bookmark vorhanden ist
...
end;
Bookmarks zählen
var
intAnz: Integer;
begin
...
intAnz := varDokument.Bookmarks.Count;
...
end;
Formularfelder
In ein Formularfeld schreiben
begin
...
varWdApp.ActiveDocument.FormFields.Item('Text1').Result := 'Versuch'; // schreibt in ein Formularfeld
varWdApp.ActiveDocument.FormFields.Item('Text1').Result := ''; // leert ein Formularfeld
...
Ein Formularfeld auslesen
var
strText: String;
begin
...
strText := varWdApp.ActiveDocument.FormFields.Item('Text2').Result; // liest ein Formularfeld aus
...
end;
Tabellen
Speicher für die Tabellensteuerung reservieren
var
varTabelle: oleVariant;
Arbeiten mit neuen Tabellen
Variable initialisieren und Tabelle anlegen
begin
...
varTabelle := varDokument.Tables.Add(varWdApp.Selection.Range, 5, 3);
...
end;
Die neu angelegte Tabelle füllen
begin
...
varTabelle.Cell(1, 1).Range.Text := 'Januar';
varTabelle.Cell(1, 2).Range.Text := 'Februar';
varTabelle.Cell(1, 3).Range.Text := UTF8ToUTF16('März');
...
end;
Arbeiten mit vorhandenen Tabellen
var
intAnz: Integer;
begin
...
varDokument.Tables.Item(1).Cell(2, 2).Range.Text:='Hallo'; // fügt in einen Wert in eine Zelle ein
varDokument.Tables.Item(1).Rows.Add(); // fügt am Ende der Tabelle eine Zeile an
intAnz:=varDokument.Tables.Item(1).Rows.Count; // ermittelt die Anzahl der Zeilen
...
end;
Tabellenvariable wieder freigeben
begin
...
varTabelle := Unassigned;
...
end;
Auszug aus den Wordkonstanten
unit uWdConst;
interface
const
// Klasse WdGoToItem
wdGoToBookmark = -1;
wdGoToComment = 6;
wdGoToEndnote = 5;
wdGoToEquation = 10;
wdGoToField = 7;
wdGoToFootnote = 4;
wdGoToGrammaticalError = 14;
wdGoToGraphic = 8;
wdGoToHeading = 11;
wdGoToLine = 3;
wdGoToObject = 9;
wdGoToPage = 1;
wdGoToPercent = 12;
wdGoToProofreadingError = 15;
wdGoToSection = 0;
wdGoToSpellingError = 13;
wdGoToTable = 2;
// Klasse wdParagraphAlignment
wdAlignParagraphCenter = 1;
wdAlignParagraphDistribute = 4;
wdAlignParagraphJustify = 3;
wdAlignParagraphJustifyHi = 7;
wdAlignParagraphJustifyLow = 8;
wdAlignParagraphJustifyMed = 5;
wdAlignParagraphLeft = 0;
wdAlignParagraphRight = 2;
wdAlignParagraphThaiJustify = 9;
//Klasse wdRowAlignment
wdAlignRowCenter = 1;
wdAlignRowLeft = 0;
wdAlignRowRight = 2;
// Klasse wdOpenFormat
wdOpenFormatAllWord = 6;
wdOpenFormatAuto = 0;
wdOpenFormatDocument = 1;
wdOpenFormatEncodedText = 5;
wdOpenFormatRTF = 3;
wdOpenFormatTemplate = 2;
wdOpenFormatText = 4;
wdOpenFormatUnicodeText = 5;
wdOpenFormatWebPages = 7;
wdOpenFormatXML = 8;
// Klasse WdSaveOptions
wdDoNotSaveChanges = 0;
wdPromptToSaveChanges = -2;
wdSaveChanges = -1;
// Klasse WdCountry
wdArgentina = 54;
wdBrazil = 55;
wdCanada = 2;
wdChile = 56;
wdChina = 86;
wdDenmark = 45;
wdFinland = 358;
wdFrance = 33;
wdGermany = 49;
wdIceland = 345;
wdItaly = 39;
wdJapan = 81;
wdKorea = 82;
wdLatinAmerica = 3;
wdMexico = 52;
wdNetherlands = 31;
wdNorway = 47;
wdPeru = 51;
wdSpain = 34;
wdSweden = 46;
wdTaiwan = 886;
wdUK = 44;
wdUS = 1;
wdVenezuela = 58;
// Klasse WdUnits
wdCell = 12;
wdCharacter = 1;
wdCharacterFormatting = 13;
wdColumn = 9;
wdItem = 16;
wdLine = 5;
wdParagraph = 4;
wdParagraphFormatting = 14;
wdRow = 10;
wdScreen = 7;
wdSection = 8;
wdSentence = 3;
wdStory = 6;
wdTable = 15;
wdWindow = 11;
wdWord = 2;
implementation
end.