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)? Zitieren
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 Und wie würde der entsprechende Befehl dazu lauten? Zitieren
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 Was genau meinst du denn mit Position? Zitieren
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 Zitieren
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 Zitieren
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 Zitieren
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? Zitieren
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. Zitieren
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. Zitieren
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. Zitieren
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 Zitieren
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? Zitieren
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 Zitieren
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. Zitieren
Klotzkopp Geschrieben 17. Juli 2013 Geschrieben 17. Juli 2013 hai, wenn ich worddoc.range.text sageArbeitest du mit Spracherkennung? Zitieren
Lsteinme Geschrieben 17. Juli 2013 Autor Geschrieben 17. Juli 2013 Arbeitest du mit Spracherkennung? Noch nicht, wär aber mal nicht ganz praktisch^^ Zitieren
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 Zitieren
Empfohlene Beiträge
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.