Makro zu finden, die mehrere Zeichenfolgen und text einfügen (spezifisch für jede saite) am Ende jedes vorkommen

Das Szenario:

Word-Dokumente, enthalten eine Auswahl von Sätzen (strings). Es könnte bis zu 30 möglichen Zeichenfolgen (die variieren von 5 bis 20 Wörter lang). Das Dokument enthält nur eine Auswahl von diesen strings.

Ziel:

Makro durchsucht das Dokument, findet jedes vorkommen einer bestimmten Zeichenfolge und fügt einen bestimmten text, code (wie " (ACWD2553)") nach jedes vorkommen. Dies wiederholt sich für alle anderen strings im set, mit jeder anderen saite mit einem eigenen eindeutigen code. Einige Zeichenfolgen werden nicht in das Dokument. Die strings können direkt in der Dokument-Körper und Zellen.
Das makro würde dann angewendet werden, um andere Dokumente, die eine andere Auswahl der Saiten.

Habe ich versucht, für viele Tage mit Auswahl.finden, Inhalte.finden Sie, Ziel.Liste, insertafter und so, aber nur mit einem Fall und lief noch in zahlreiche Probleme (z.B. nur das einfügen in eine Instanz, oder den code mehrmals einsetzen, bis Word friert ein).

Bonus-feature ###

In der Lage sein zu entscheiden, welche Anzahl von strings nach dem gesucht wird (es gibt möglicherweise bis zu 60 Sätze) und Ihre entsprechenden codes. Jedes Dokument würde nur strings aus einem einzigen Satz.

Eine Idee, die ich hatte, war für die Saiten sind in einer Spalte (in Excel?) und die passenden codes in die zweite Spalte. Das makro würde dann durchsuchen Sie das Dokument für jeden string in der Liste (anhalten am Ende der Liste, da die Anzahl der Saiten variiert zwischen den Sätzen) findet den passenden code in die Zelle in der nächsten Spalte und fügt dann den code für jedes vorkommen der Zeichenfolge in das word-doc. Wenn ein anderer Satz erforderlich ist, wird die Excel-Datei kann ausgetauscht werden, mit der die Datei mit dem entsprechenden Satz von Stacheln, aber mit der gleichen Datei-Namen. Oder alle Sätze in eine Excel-Datei auf verschiedenen Arbeitsblättern und name der Registerkarte Eingabe in Word (userform?) die Kräfte, die Suche nach relevanten. Diese Datei liegt auf einem Netzlaufwerk.

Nicht sicher, ob diese größer ist dann Ben Hur, das Letzte Stück wäre schön, aber ich kann auch manuell geben Sie die Zeichenfolgen in der raw-code aus einem template-code.

Bearbeitet diesen Beitrag auf meine schlechten Versuch, den code. Siehe mein Kommentar unten. Ich habe gerade gemerkt, dass ich hinzufügen könnte-code zu diesem Bereich. Versucht eine Vielzahl von Iterationen der folgenden, von denen keiner funktionierte gut, und die nicht an das heran, was ich brauche. Ich weiß, es gibt offensichtliche Fehler, wie ich weiter unten gesagt habe ich rumprobiert mit dem code und machte es noch schlimmer in dem Prozess, durch mischen von bits und Stücke zusammen.

Sub Codes()

Dim range As range
Dim i As Long
Dim TargetList

TargetList = Array("This is sentence 1", "This is string 2 which could be twenty words in length", "This is string three, there could be thirty more strings to search") ' put list of terms to find here

For i = 0 To UBound(TargetList)

Set range = ActiveDocument.range

With range.Find
.Text = TargetList(i)
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False

Do While .Execute(Forward:=True) = True
range.Find.Execute
range.InsertAfter Text:=" (ACWD1234)"

Loop

End With
Next

End Sub
  • Sie haben geschrieben: I have tried for many days using selection.find, content.find... Zeigen, dass code, mit dem wir Ihnen helfen können, zu verbessern. .Find wird notwendig sein, für Sie sicher.
  • Ich habe nicht den code, da es ziemlich Quatsch und es geht nicht überall in der Nähe was ich brauche. Auch ich habe gespielt mit ihm um, so dass der aktuelle code ist noch schlimmer als die vorherigen iteration. Ich dachte, meine Beschreibung wäre bessere Vorstellung von dem, was ich bin nach, und der code könnte nur verwirren sich die Dinge. Aber hier ist sowieso: ... begrenzt durch die Zeichen-Grenze, kann nicht fügen Sie den code in.
InformationsquelleAutor user2691384 | 2013-08-25
Schreibe einen Kommentar