MadCro Geschrieben 11. Juni 2003 Geschrieben 11. Juni 2003 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 Zitieren
MadCro Geschrieben 11. Juni 2003 Autor Geschrieben 11. Juni 2003 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 Zitieren
Gast Geschrieben 11. Juni 2003 Geschrieben 11. Juni 2003 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 Zitieren
MadCro Geschrieben 11. Juni 2003 Autor Geschrieben 11. Juni 2003 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 Zitieren
DerMatze Geschrieben 11. Juni 2003 Geschrieben 11. Juni 2003 ApWord.Quit wichtig: ApWord am Ende auf Nothing setzen, sonst kanns passieren, dass Word im hintergrund offen bleibt. Matze Zitieren
Gast Geschrieben 11. Juni 2003 Geschrieben 11. Juni 2003 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. Zitieren
MadCro Geschrieben 12. Juni 2003 Autor Geschrieben 12. Juni 2003 hej LoneGunman sag mal funkzt das bei dir ? also bei mir nicht, "boolGefunden" ist immer "false" hmmm Zitieren
MadCro Geschrieben 12. Juni 2003 Autor Geschrieben 12. Juni 2003 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 Zitieren
Gast Geschrieben 12. Juni 2003 Geschrieben 12. Juni 2003 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* Zitieren
Gast Geschrieben 12. Juni 2003 Geschrieben 12. Juni 2003 @ MadCro Soll bei Dir die Anzahl der Suchstrings im Gesamttext ausgegeben werden? Zitieren
MadCro Geschrieben 12. Juni 2003 Autor Geschrieben 12. Juni 2003 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 Zitieren
Gast Geschrieben 12. Juni 2003 Geschrieben 12. Juni 2003 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. Zitieren
MadCro Geschrieben 12. Juni 2003 Autor Geschrieben 12. Juni 2003 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 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.