Zum Inhalt springen

VB - Word Schnittstelle


MadCro

Empfohlene Beiträge


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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen



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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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*

Link zu diesem Kommentar
Auf anderen Seiten teilen


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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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 :rolleyes: 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 ?? :o)))

hihi naj Danke Dir trozdem nochmal :e@sy

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...