Lsteinme Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Gibt es eine Möglichkeit au meiner vb.net Anwendung heraus die Position eines bestimmten Wortes in einem Worddocument zu ermitteln? Quasi sowas wie range.indexof(text)?
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 Und wie würde der entsprechende Befehl dazu lauten?
a3quit4s Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Du hast doch alle Stichwoerter die du brauchst... aber weil du so nett fragst: Let me google that for you
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 (bearbeitet) 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 17. Juli 2013 von Lsteinme
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 (bearbeitet) 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 17. Juli 2013 von Lsteinme
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Nochmal die Frage: Was genau meinst du mit Position? In welcher Form muss die Positionsinformation vorliegen, damit du dort einfügen kannst?
pr0gg3r Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Ich bin weder VB- noch .net-Fan, aber vielleicht hilft dir das hier weiter. Dort ist erleutert, wie man Word-Dateien öffnen kann, Suchen musst du dann selber hinkriegen.
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 @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.
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 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.
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 (bearbeitet) 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 17. Juli 2013 von Lsteinme
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Laut Doku sollte Range.Text unformatierten Text enthalten. Wo siehst du denn diese schwarzen Kreise? Im Debugger?
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 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
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 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.
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 hai, wenn ich worddoc.range.text sageArbeitest du mit Spracherkennung?
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 Arbeitest du mit Spracherkennung? Noch nicht, wär aber mal nicht ganz praktisch^^
HJST1979 Geschrieben 18. Juli 2013 Geschrieben 18. Juli 2013 Hallo habe das Thema "nur" überflogen, aber wenn du mit ".docx" Dokumenten arbeitest hilft dir folgendes vielleicht weiter: Download Open XML SDK 2.0 for Microsoft Office from Official Microsoft Download Center Gruß Hans-Jörg
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden