[C#] Bookmark (Textmarke) in Word ersetzen

Drucken
( 0 Votes ) 
Hauptkategorie: Programmieren Kategorie: C#
Erstellt am 16.05.2012 Zuletzt aktualisiert am 16.05.2012 Geschrieben von Jonny132
Mithilfe der in Office beigefügten PIA's (Primary Interop Assemblies) ist es einfach möglich mit Office Programmen wie Word, Excel zu kommunizieren. Ein häufiges Scenario in der Softwareentwicklung ist, dass man vorhandene Vorlagen dynamisch mit Werten befüllt. Für genau dieses Vorhaben bieten sich Bookmarks (auf Deutsch 'Textmarken') an, welche einfach per Code ersetzt werden können.

Um die Funktionalität dieser PIA's nutzen zu künnen müssen wir also zuerst die DLL Microsoft.Office.Interop.Word referenzieren.

Zusätzlich fügen wir ein Using ein:
using Word = Microsoft.Office.Interop.Word;
Indem wir dem Using ein Bezeichner hinzufügen, können wir die ganze Funktionalität des Microsoft.Office.Interop.Word - Namespaces einfach über den Bezeichner 'Word' abrufen.

Der eigentliche Code:
string path = @"C:\Temp\text.doc";
Word.Application app = new Word.Application();
try
{
  Thread.Sleep(2000);
  Word.Document doc = app.Documents.Open(FileName: path, ReadOnly: false);

  if (doc.Bookmarks.Exists("Bookmark1"))
  {
     doc.Bookmarks["Bookmark1"].Range.Text = "Neuer Text des Bookmarks";
  }
  doc.Close(Word.WdSaveOptions.wdSaveChanges);
}
catch (Exception ex)
{
   MessageBox.Show(ex.Message);
}
finally
{
   app.Quit(SaveChanges: false);
}
Process.Start(path);

Zuerst erstellen wir eine neue Word.Application - Instanz. Da bei der Erstellung alle installierten Add-Ins von Word geladen werden müssen, rufen wir ein Thread.Sleep (Namespace System.Threading) von zwei Sekunden auf, da es ansonsten zu Fehlern führen könnte.

Danach öffnen wir das Word Dokument via Open im Bearbeitungsmodus und überprüfen, ob in der Bookmarks-Auflistung unsere Textmarke überhaupt vorhanden ist via Exists. Trifft dies zu setzen wir den Wert des Bookmarks auf unseren neuen Text.

Zu Schluss rufen wir noch die Close - Methode des Dokuments auf, bei der wir als Parameter mit angeben können, ob die Änderungen gespeichert werden sollen.

Im Finally des Try-Catch Blockes rufen wir noch die Quit-Methode der Word instanz auf. Dies ist mitunter der wichtigste Aufruf, da hier der Prozess der gestartet wurde wieder Beendet wird und somit auch wieder alle Ressoucen freigegeben werden.

    Veröffentlichen Sie ihre Kommentare ...