Hallo Veronique,
natürlich lässt sich dein Problem mit VBA lösen. Leider kann ich dir aus Zeitgründen meinen Vorschlag nicht genauer erklären. Sieh in der VBA-Hilfe für einzelne Befehle nach. In einem operationellen System würde ich keine InputBox, sondern eine UserForm mit anderen Steuerelementen verwenden. Dazu müsste ich aber zu viel erklären. Die Split-Funktion ist in älteren Office-Versionen nicht enthalten. Falls dadurch ein Fehler auftritt, melde dich.
Sub Begriffe_suchen()
Dim a, AdC, Anzahl(), b, i, k, lMin, s(), suche, v
nocheinmal: 'Sprungadresse, falls z.B. wegen Schreibfehler eine Wiederholung erforderlich ist
suche = InputBox("Suchbegriffe mit Kommata getrennt eingeben", "Begriffe zählen", suche)
If suche = "" Then MsgBox "Kein Suchbegriff eingegeben!": Exit Sub
'Suchwörter (w()) und Anzahl (v) bestimmen:
w = Split(suche, ",")
v = UBound(w)
ReDim s(v)
lMin = Len(w(0))
For k = 0 To v
w(k) = Trim(w(k))
s(k) = LCase(w(k))
If Len(s(k)) < lMin Then lMin = Len(s(k))
Next k
lMin = lMin - 1
'Suchwörter sortieren:
For k = 0 To v - 1
For i = k + 1 To v
If s(i) < s(k) Then
a = w(i): w(i) = w(k): w(k) = a
a = s(i): s(i) = s(k): s(k) = a
End If
Next i
Next k
'Suche durchführen und Anzahl bestimmen
ReDim Anzahl(v)
For i = 0 To v
Set AdC = ActiveDocument.Content
Selection.HomeKey unit:=wdStory
Do
AdC.Find.Execute FindText:=s(i), Forward:=True
If AdC.Find.Found = True Then Anzahl(i) = Anzahl(i) + 1
Loop Until AdC.Find.Found = False
Next i
'in neues Dokument ausgeben
a = ""
For i = 0 To v
a = a + w(i) + ":" + vbTab + Str(Anzahl(i)) + vbCrLf
Next i
b = MsgBox("Folgende Begriff wurden gesucht" + vbCrLf + a + "Schreibfehler? Suche wiederholen?", vbYesNo)
If b = vbYes Then GoTo nocheinmal
Documents.Add
Selection.TypeText Text:=a
End Sub
Es lohnt sich, VBA zu lernen!
Gruß
Holger
Veronique schrieb am 07.08.2008 20:39:16:
Guten Tag,
ich habe eine generelle Frage, an deren Antwort ich entscheide, ob es sich lohnt VBA zu lernen oder nicht:
Ich bräuchte ein Skript, mit dem ich in einem Word-Dokument beliebige Begriffe, die ich davor variabel festlegen kann (z.B. Ameise, Marienkäfer, ...), zählen kann.
Als Ausgabe wünsche ich mir ein extra Dokument, in dem in etwa Folgendes steht: "Ameise = 31 mal in dem Dokument enthalten, Marienkäfer = 5 mal in dem Dokument enthalten"...
Wahrseinlich ist das super simpel, aber ich wollte trotzdem mal gefragt haben, ob das generell möglich ist, da ich Computern ja doch nicht ganz über den Weg traue...
Vielen Dank in Vorraus!
Veronique |