Suche nach beliebigem Text

Hallo,
ich möchte ein Makro für Word 2007 programmieren.
Dieses Makro soll einen zuvor eingegebenen beliebigen Text im gesamten Dokument suchen, und den gefundenen Text fett markieren.

Wenn ich das Makro einfach so aufzeichne, wird immer nach dem Text gesucht, den ich bei der Aufzeichnung benutzt habe.

Könnt ihr mir sagen, was ich im VBA-Editor eingeben muss?

Bitte erklärt mir das auch, weil ich VBA noch nicht so gut kann.
Danke im Voraus,
Chrissi

Achso,
ich benutze MS Visual Basic 6.5

Chrissi

Hallo,

dann zeige uns doch mal den bisherigen Code, der durch die Aufzeichnung entstanden ist. Die Stelle, an die eine Inputbox gehört um den Suchtext einzugeben finden wir dann schon.

Gruß Rainer

Der bisherige Quelltext:

Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
 Selection.Copy
 Selection.MoveRight Unit:=wdCharacter, Count:=1
 Selection.Find.ClearFormatting
 With Selection.Find
 .Text = "hallo"
 .Replacement.Text = ""
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchAllWordForms = False
 .MatchSoundsLike = False
 .MatchWildcards = True
 End With
 Selection.Find.Execute
 Application.Run MacroName:="Normal.NewMacros.Fett"

Mfg Chrissi

[MOD] - Pre-Tags eingefügt

Hallo,

zuerst: Ich habe mir erlaubt, in Deinen Beitrag Pre-Tags einzufügen. Sieh’s Dir mal an, sieht so doch viel schönder aus, oder? :smile:

Von Word VBA habe ich keine rechte ahnung, aber ich schlage vor, das mal so zu versuchen:

Selection.MoveLeft Unit:=wdWord, Count:=1, Extend:=wdExtend
 Selection.Copy
 Selection.MoveRight Unit:=wdCharacter, Count:=1
 Selection.Find.ClearFormatting
 With Selection.Find
 .Replacement.Text = Inputbox("Bitte einzufügenden Text eingeben")
 .Forward = True
 .Wrap = wdFindContinue
 .Format = False
 .MatchCase = False
 .MatchWholeWord = False
 .MatchAllWordForms = False
 .MatchSoundsLike = False
 .MatchWildcards = True
 End With
 Selection.Find.Execute
 Application.Run MacroName:="Normal.NewMacros.Fett"

Wenn das so falsch ist, müssen wir warten. Sobald Reinhard das sieht, schreibt er Dir die richtige Lösung. :smile:

Allerdings … Wenn der Text ohnehin eingetippt werden muss, hier eben jetzt in eine Inputbox, kann man den doch auch gleich ins Dokument tippen? Wenn da immer das selbe hin soll, kannst Du ‚Inputbox …‘ natürlich wieder entfernen. Da könnte auch stehen …

.Replacement.Text = „Test“
oder
.Replacement.Text = NeuerText
wobei dann ‚NeuerText‘ eine Variable ist, an die Du vorher, z.B. beim Öffnen des Dokuments mit …

NeuerText = „Dein Text, der eingefügt werden soll“

… den einzufügenden Text übergeben musst.

Die Zeile …

.Text = „hallo“

… habe ich entfernt, hoffentlich geht da so noch.
In der Zeile steht jedenfalls, daß nach dem Text „hallo“ gesucht werden soll und das ist ja sicher nur für Dein Beispiel richtig.

Testen kannst Du auch mal mit …

.Text = „“

oder

.Text = „*“

Das ist ja schnell geändert.

Viel Erfolg!

Gruß Rainer

ich benutze MS Visual Basic 6.5

Hallo Chrissi,

ja, wenn das so ist, so ist es ein VB-Problem, dafür ist Rainer zuständig oder Alex oder oder…

Soll doch Rainer mal sein lausiges VB6.0 auf VB6.5 updaten. :smile:))

Im Ernst jetzt, diese Angabe der Vb-Nummer interessiert keinen, wenn du nochmals hier oder in sonstigen Foren posten würdest, wichtig ist bei Vba anzugeben, Word2007 oder Word2003 in Spezialfällen auch noch die Servicepacks und das Betriebssytem, aber das nur wenn da seltsame Dinge geschehen die nicht in Word liegen, ansonsten reicht das programm, also Word und die jahreszahl.

Und, du hast kein Vb6.5, nur Teile davon, ergänzt durch VBa-Befehle für Word.

Ich habe Office2000, d.h. stelle ich eine Anfrage zu Excel, so könnte ich sagen, ich hab
Excel2000, Version 9.0, beruhend auf VB6.0
du könntest sagen:
Excel2007, Version 12.0 beruhend auf VB6.5

Nur, XL2000 oder XL2007 anzugeben reicht aus, der Rest ist eh klar.

Und, Rainer hat insofern Recht, es fiele mir relativ leicht, mit Excel-Vba in Excel da irgendwelche Texte in Zellen zu markieren.

Aber zwischen Word-Vba, Ecel-Vba, Outlook-Vba, CorelDraw-Vba liegen Welten.

Nicht bei den banalen Basics, For-Schleife, If-Then, das können sie alle, aber bei den wichtigen Dingen, wie spreche ich „Dinge“ an, wie heißen denn die jeweils, da gehen Stunden drauf bis man 2 Codezeilen weiter ist.

Zurück zu deinem Problem, die Lösung ist sicher einfach, wenn ich denn wüßte wie ich einem Word-Document sagen könnte, ich fang beim ersten Buchstbaben an, gehe den ganzen Text durch und färbe dann bestimmte Teststücke.

Mein Problem ist nicht wie man bestimmte erkannte Textstücke färbt, auch nicht wie man eine Schleife baut, mein Problem ist, wie gehe ich das Dokument von Anfang bis Ende durch.

Ich probier das morgen mal, mal schauen was dabei rauskommt.

Gruß
Reinhard

Hallo Reinhard,

Soll doch Rainer mal sein lausiges VB6.0 auf VB6.5 updaten.

-)))

also das ist ja, … das ist ja, … schön daß Du da bist. :smile:

Gruß Rainer

Der bisherige Quelltext:

Hi Chris,

sorry, hatte eben erst Zeit mir das mal anzuschauen.

Zeige bitte mal den kompletten Code.
Und du hast da nichts selbst geändert an dem Codeschnipsel den du zeigtest, also der Makrorekorder hat dies produziert:

Application.Run MacroName:=„Normal.NewMacros.Fett“

irgendwie staun, egal, wie auch immer, dann müssen wir natürlich auch wissen was in der Prozedur „Fett“ steht

Und jetzt mal unabhängig von deinen Codes.

Du möchtest eine Eingabemöglichkeit um Text einzugeben und dann soll ein Makro das Dokument durchgehen und überall wo dieser Text auftaucht diesen „fett“ machen. Ist das so korrekt?

Gruß
Reinhard

OT Anfragen beantworten
Hallo Rainer,

ich habe in den letzten Wochen damit begonnen, unbewußt, bewußt, weiß gar nicht wie es begann, bei Anfragen erstmal etwas zurückzufragen.

Und siehe da, da ich mich erst bei einer Antwort auf meine Nachfrage näher um das Problem zu kümmern versuche, habe ich nur noch die Hälfte „Arbeit“.

Gedanken, Code, für die „Tonne“ haben sich sehr dezimiert *freu*

Gruß
Reinhard

Hallo reinhard,

ich habe in den letzten Wochen damit begonnen, unbewußt,
bewußt, weiß gar nicht wie es begann, bei Anfragen erstmal
etwas zurückzufragen.

Und siehe da, da ich mich erst bei einer Antwort auf meine
Nachfrage näher um das Problem zu kümmern versuche, habe ich
nur noch die Hälfte „Arbeit“.

Gedanken, Code, für die „Tonne“ haben sich sehr dezimiert
*freu*

da ist was dran. :smile: Aber bei mir werden die Threads ohnehin schnell sehr lang, da ist manchmal der Code schneller getippt. *gg* In VB kann ich mich viel deutlicher ausdrücken als im Text und das spreche ich inzwischen genau so flüssig.

Gruß Rainer