Veröffentlicht 11. Juni 200322 j Hi, gibt es eine möglichkeit die Suchfunktion von Word für Word-Dokumente auserhalb von Word (hmmm :confused: - also mit VisualBasic ) zu benutzen ?? Danke gruß MadCro :marine
11. Juni 200322 j jep die gibt es dafür muss man nur einen verweis auf MS Word 9.0 Object Library machen, habe aber immer noch nicht rausgefunden wie das mit dem "suchen" funktioniert
11. Juni 200322 j Dim ApWord As New Word.Application Private Sub Form_Load() Dim boolGefunden As Boolean ApWord.Visible = True ApWord.Documents.Open "C:\Test.doc" ApWord.Documents(0).Activate ApWord.ActiveDocument.Content.Find.Text = "SUCHSTRING" ApWord.ActiveDocument.Content.Find.Execute If ApWord.ActiveDocument.Content.Find.Found Then boolGefunden = True Else boolGefunden = False End If ApWord.Documents.Close Set ApWord = Nothing End Sub
11. Juni 200322 j Hej LoneGunman danke Dir viellll mals für den Code, hmmm mein compiler mekert aber bei dieser Zeile hier : "ApWord.Documents(0).Activate" da sagt er "Das Angeforderte Elemet ist nicht in der Sammlung vorhanden" hmmm naja egal hab die Zeile mal auskommnetiert und dann hat er nicht mehr gemekert nur findet er den such string nicht in meine Word Dokument ich habe darauf hin mal so was ausprobiert ApWord.Selection.Range.Find.Execute("MEINSUCHSTRING", Forward:=True, Wrap:=wdFindContinue) das funktz auch aber leider findet er nur einmal das Wort "MEINSUCHSTRING" obwohl es öffters vorkommt. Und noch n kleines Problem, wie bekomme ich Word wieder zu ? die Zeile : ApWord.Documents.Close macht ja nur das dokument zu aber Word bleibt weiter hin offen. Also mir wäre es noch lieber Word garnicht zu öffnen , sondern nur das Dokument in den Speicher zu laden und dann dort nach meinem String zu suchen, naja ob das so ohne weiters geht gruß MadCro :marine
11. Juni 200322 j ApWord.Quit wichtig: ApWord am Ende auf Nothing setzen, sonst kanns passieren, dass Word im hintergrund offen bleibt. Matze
11. Juni 200322 j Sorry MadCro, hier nochmal der berichtigte und getestete Code. Dim ApWord As New Word.Application Private Sub Form_Load() Dim boolGefunden As Boolean ApWord.Visible = True ApWord.Documents.Open "C:\Test.doc" ApWord.Documents([COLOR=red]1[/COLOR]).Activate ApWord.ActiveDocument.Content.Find.Text = "SUCHSTRING" ApWord.ActiveDocument.Content.Find.Execute If ApWord.ActiveDocument.Content.Find.Found Then boolGefunden = True Else boolGefunden = False End If ApWord.Documents.Close ApWord.Quit Set ApWord = Nothing End Sub In rot die wichtige Änderung.
12. Juni 200322 j hej LoneGunman sag mal funkzt das bei dir ? also bei mir nicht, "boolGefunden" ist immer "false" hmmm
12. Juni 200322 j Private Sub Form_Load() Dim WordApp As New Word.Applicatio Dim i As Integer i = 0 WordApp.Visible = False WordApp.Documents.Open ("c:\newTest.doc") If WordApp.Selection.Range.Find.Execute("Format", Forward:=True, Wrap:=wdFindContinue) Then i = i + 1 End If MsgBox i WordApp.Documents.Close WordApp.Quit Set WordApp = Nothing End Sub also so funktioniert es bei mir nur das problem ist das er nur einmal das gesuchte wort finden, muss ihm irgenwie beibringen weiterzusuchen
12. Juni 200322 j Also, Du musst die Suche in einer Schleife organisieren, im Moment hast Du nur eine IF-Abfrage. Desweiteren musst Du den Rangebreich jedes Mal so modifizieren, so das der bereits gefundene Suchstring nicht mehr im Rangebereich liegt. Ich mach jetzt mal Mittagspause, danach kann ich Dir das genau erklären. Aber ich habe das Problem erkannt. *g*
12. Juni 200322 j hej LoneGunman jep wir offt das gesuchte wort in einem bestimmten dokument vorkommt hab auch bissle rumgesucht weil ich dachte das es so was wie einen "Weitersuchen" Parameter gibt , aber leider nix
12. Juni 200322 j Option Explicit Dim strGesamttext As String Private Sub btnSuchen_Click() Dim ApWord As New Word.Application ApWord.Visible = True ApWord.Documents.Open "[COLOR=red]C:\Test.doc[/COLOR]" strGesamttext = ApWord.ActiveDocument.Content ApWord.Documents.Close ApWord.Quit Set ApWord = Nothing MsgBox count_string(strGesamttext, "[COLOR=red]SUCHSTRING[/COLOR]") End Sub Public Function count_string(ByVal strGesamttext, ByVal strSuchstring) As Integer Dim intTemp As Integer intTemp = 0 While InStr(strGesamttext, strSuchstring) <> 0 strGesamttext = Replace(strGesamttext, strSuchstring, "", 1, 1) intTemp = intTemp + 1 Wend count_string = intTemp End Function Damit sollte es funktionieren, habe ich bei mir getestet. Und mit der Lösung musst Du garnicht so tief in die Wordprogrammierung eingreifen. Die roteingefärbten Sachen musst Du bei Dir durch Deine Werte ersetzen.
12. Juni 200322 j hej Ho LoneGunman das Ding ist ja mal cool, genau so was habe wollte ich progen, naja bei mir hat es da mal bissle länger gedauer hatte ja einen anderen weg versucht das funkzt ja wunderbar :floet: ich DANKE DIR für den code :hodata aber so richtige Word Suche mit dieser "Word OLE" ist es ja nicht, da hätte man doch gleich mit 'Open' die Datei aufmachen den Inhalt auslesen und drine nach dem String suchen können, oder ?? ))) hihi naj Danke Dir trozdem nochmal :e@sy
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.