Es ist die Frage aufgetaucht, wie man mit Python eine Word-Datei öffnen, die darin enthaltenen Textmarken (Bookmarks) anspringt und dort einen frei definierbaren Text einfügen kann.
Das geht so:
Man erstellt sich eine Word-Datei (ein Dokument), die als Vorlage dient. In diesem Dokument setzt man die Textmarken an die Positionen, an denen man den Text hinschreiben möchte. Im Beispiel, weiter unten, habe ich das Dokument "dokument.doc" genannt. Und das Python-Modul muss für dieses Beispiel im selben Ordner wie das Dokument liegen.
Zur Anleitung habe ich mit WINK einen kleinen Film gemacht. Leider habe ich erst zu spät gemerkt, dass drei Bilder pro Sekunde doch zu wenig sind. Aber man kann, glaube ich, doch alles wichtige erkennen.
http://gerold.bcom.at/bilder/word_textm ... python.htm
Und hier ist der zugehörige Python-Quellcode:
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-
import win32com
import win32com.client
import os
import os.path
filename = os.path.abspath("dokument.doc")
# Word-Application referenzieren
app = win32com.client.Dispatch("Word.Application")
# Word sichtbar machen. Kann später weggelassen werden
app.Visible = True
# Quelldatei öffnen
doc = app.Documents.Open(filename)
# Die in der Quelldatei enthaltenen Textmarken (marke1, marke2 und marke3)
# anspringen und hinten dran einen Text schreiben
doc.Bookmarks("marke1").Range.InsertAfter("Hier ist Marke1")
doc.Bookmarks("marke2").Range.InsertAfter("Hier ist Marke2")
doc.Bookmarks("marke3").Range.InsertAfter("Hier ist Marke3")
# Neuen Dateinamen generieren und unter diesem Dateinamen das geänderte
# Dokument abspeichern
base, ext = os.path.splitext(filename)
new_filename = base + "_new" + ext
doc.SaveAs(new_filename)
# Das Dokument und Word schließen und die Referenzen vernichten. WICHTIG!
doc.Close()
del doc
app.Quit()
del app
# Fertig
print "Fertig"
Gerold