vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Text in Word gezielt ersetzen 
Autor: GorchVossen
Datum: 08.04.05 12:02

Hallo,
ich verwende VB.NET und das .COM - Objekt "Microsoft.Office.Interop.Word".

Ich möchte in einem MS Word Dokument gezielt Wörter austauschen lassen. Dazu schreibt der User Schlüsselbegriffe in das Dokument und mein Programm soll diese dann durch Werte ersetzen.
Die Schlüsselwörter schreibt man so:
<-Vorname-> <-Nachname-> hat heute Geburtstag.

Klingt einfach, aber ich habe hier ernsthafte Schwierigkeiten. Ich habe zuerst eine Funktion geschrieben, die versucht, den gesamten Inhalt auszutauschen. Dabei geht jedoch die Formatierung des Dokuments verloren:
Private Sub Austausch(ByVal Schlüssel As String, ByVal Ersatz As String, ByVal _
  Dokument As Microsoft.Office.Interop.Word.Document)
'Tauscht die im Dok enthaltenen Schlüsselwörter durch Werte aus
Dim Inhalt As String = ""
With Dokument
Inhalt = .Content.Text
.Content.Text = Replace(Inhalt, "<-" & Schlüssel & "->", Ersatz, 1, -1, _
  CompareMethod.Text)
End With
End Sub
Wenn jemand eine Lösung hat, die Formatirung beizubehalten, wäre das klasse.

Dann habe ich versucht, eine Funktion zu schreiben, welche Wort für Wort vergleicht und diese dann ersetzt:
Private Sub Austausch(ByVal Schlüssel As String, ByVal Ersatz As String, ByVal _
  Dokument As Microsoft.Office.Interop.Word.Document)
Dim i, Wörter As Integer
For i = 1 To Wörter - 3
If .Words(i).Text = "<-" Then
If .Words(i + 1).Text.ToUpper = Schlüssel.ToUpper And i <= Wörter - 2 Then
If Microsoft.VisualBasic.Left(.Words(i + 2).Text, 2) = "->" Then
.Words(i).Text = ""
.Words(i).Text = Replace(.Words(i).Text, Schlüssel, Ersatz, 1, -1, _
  CompareMethod.Text)
.Words(i + 1).Text = Replace(.Words(i + 1).Text, "->", "", 1, -1, _
CompareMethod.Text)
i += 2
End If
End If
End If
Next i
Fragt mich nicht, warum ich den Index so gesetzt habe. Word springt aus mir nicht bekannten Gründen manchmal einfach ein Wort weiter, wenn eines "angefasst" wurde.
Fakt ist, dass diese Funktion unglaublich langsam ist (60 Sekunden bis ein kleines Dokument durchlaufen wurde) und außerdem nicht (mehr) funktioniert.

Ich wäre für wirklich jeden Lösungsansatz dankbar, da ich im Netz nicht auf brauchbare Beispiele gestoßen bin.

Danke im Voraus -
Gorch Vossen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Text in Word gezielt ersetzen2.550GorchVossen08.04.05 12:02
Re: Text in Word gezielt ersetzen1.764Easyrider08.04.05 13:39
das Problem ist doch damit nicht weg2.261GorchVossen08.04.05 14:03
Re: das Problem ist doch damit nicht weg1.698spike2408.04.05 15:57
da gibt es aber einen Haken..2.254GorchVossen08.04.05 16:06
Re: Text in Word gezielt ersetzen1.680UR09.04.05 14:54

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel