Zum Inhalt springen

Word auffinden der Position eines Wortes


Lsteinme

Empfohlene Beiträge

ich suche nicht den Index des wortes in einem vb.net internen String, sondern in einer Worddatei, klar kann ich den ganzen text der Worddatei in einen String kopieren, aber die frage war so gemeint ob es auch direkt geht.

Bearbeitet von Lsteinme
Link zu diesem Kommentar
Auf anderen Seiten teilen

Szenario:

Ich habe mir eine Formatvorlage erstellt, diese wird mit XML dateien befüllt.

Ganz oben ist eine Tabelle mit Daten darüber an wen das Dokument gehen soll sowie einigen weiteren Dingen.

darunter soll ein Inhaltsverzeichnis

darunter dann alle XML-Items.

Es geht darum das Inhaltsverzeichnis, welches ich dummerweise über den Word-mechanismus NACH der XML einlese erzeugen muss zwischen die Tabelle ganz oben und das erste XML-Item zu platzieren(Grund dafür ist irrelevant).

Hierfür habe ich in der vorlag das Wort XPLACEOFCONTENTTABLEX eingefügt. jetzt muss ich halt raus finden an welcher stelle genau dieses Wort in meinem Worddokument beginnt.

der Code für das einfügen der Contenttable wäre dann folgender:


dim s as string="XPLACEOFCONTENTTABLEX "

 dim startofword as integer= worddoc.range.METHODENNAME(s)

 With WordDoc

            .TablesOfContents.Add(Range:=WordDoc.Range(startofword, startofword+s.length), _

                       RightAlignPageNumbers:=True, _

                       UseHeadingStyles:=True, _

                       IncludePageNumbers:=True, _

                       AddedStyles:="styleSection", _

                       UseHyperlinks:=False, _

                       HidePageNumbersInWeb:=True, _

                       UseOutlineLevels:=True)

            .TablesOfContents(1).Range.Font.Size = 12

            .TablesOfContents(1).TabLeader = Word.WdTabLeader.wdTabLeaderDots

        End With

oder so ähnlich, ob das mit dem Length sein muss müsst ich dann halt noch sehen.

Bearbeitet von Lsteinme
Link zu diesem Kommentar
Auf anderen Seiten teilen

@Klotzkopp das ist ne gute Frage, ich vermute stark es geht hier um die Position des Buchstabens im Fliestext, also ohne interne Formatierungszeichen etc, da ich es aber auch nicht sicher weis, hab ich die frage nach der .Indexof methode gesellt, die mit der Range methode von Word vernünftig zusammen arbeitet^^

@pr0gg3r, öffnen kann ich sie ja, das Inhaltsverzeichnis ist auch drin, nur aktuell an der aller ersten Position im Text, was gleich wieder gemecker von den Leuten die das Wordinhaltsverzeichnis haben wollten nach sich ziehen wird^^

Es gibt in bei der COM-Komponete zwar den begriff des "Find" als Attribut eines Worddocuments, ich hab aber noch nicht raus ob und wie man damit was anderes machen kann wie den bestehenden Text durch einen anderen zu ersetzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich vermute stark es geht hier um die Position des Buchstabens im Fliestext, also ohne interne Formatierungszeichen etc, da ich es aber auch nicht sicher weis, hab ich die frage nach der .Indexof methode gesellt, die mit der Range methode von Word vernünftig zusammen arbeitet^^

Vermutungen helfen dir hier nicht weiter. Prüf nach, was genau du zum Einfügen brauchst, dann kann man gezielt suchen. Es bringt ja nichts, wenn wir hier herausarbeiten, wie man den absoluten Zeichenindex oder Zeilen- und Spaltennummer oder was weiß ich heraussucht, und am Ende brauchst du ein Absatz-Objekt mit Offset.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ok es scheint sich um den index des Buchstaben im fliestext zu handeln, ich habs jetzt einfach mal mit range.text.indexof versucht, das geht aber etwas in die hose, weil im range.text jede menge Schwarze ausgefüllte kreise drin sind, die nicht mit zur zeichenposition zählen wenn ich die Position an Word zurück gebe.

Obendrein, kann ich die Punkte auch nicht einfach zählen und später abziehen, weil mein Visualstudio sich weigert das Zeichen irgendwie anzuzeigen, außer es ist in dem String...

Bearbeitet von Lsteinme
Link zu diesem Kommentar
Auf anderen Seiten teilen

hai, wenn ich worddoc.range.text sage und gehe mit dem Mauszeiger über den Text sehe ich die kreise, klick ich rein, sind sie nicht da. ich Checke grade noch was die berechnung hier durcheinander bringt, die "Kreise" warens nicht. Das sind scheinbar zeichen für "Hier steht kein Zeichen", was normalerweise nicht optisch interpretiert wird kopier mal "" und entfern die beiden Anführungsstriche, aber im Editor, da siehst du das Zeichen.

EDIT:

Halt sie warens doch

Ich hatte beim späteren indexbestimmen noch ne alte ungefilterte Referenz drin

Link zu diesem Kommentar
Auf anderen Seiten teilen


 Dim s As String = "XPLACEFORSUMMARYX"

            Dim text As String = worddoc.Range.Text

            text = text.Replace(""c, "")

            text = text.Trim

            Dim startpos As Integer = text.IndexOf(s)

war die lösung für das Indexproblem, wenn auch wahrscheinlich nicht die beste, da ich erst auslesen, dann suchen musste. schätze es müsste eigentlich auch ohne auslesen gehen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...