MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Office > Microsoft Word
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 07.02.2018, 10:19   #1
Wurzaaa
MOF User
MOF User
Standard Word 2010 - Suchen & Ersetzen in Kopfzeile (dynamisch)

Hallo Community,

wie der Titel schon sagt, suche ich einen dynamischen "Suche & Ersetze"-VBA-Code.

Den folgenden Beitrag (http://www.*************************426974_0_0_asc.php) habe ich so geändert, dass es eine bestimmte Zeichenkette sucht und ersetzt.

Wie schafft man es aber die folgende Zeichenkette zu suchen und dementsprechend zu ändern:

Q_073&AA_05

Q_ ist immer gleich, aber die länge und das Ende der Zeichenkette ist variabel.
Gibt es dafür eine Funktion?

Vielen Dank.

MfG,
Daniel
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 10:44   #2
halweg
MOF Koryphäe
MOF Koryphäe
Standard

Schau dir doch mal die Platzhaltersuche an, damit sollte das möglich sein. Welcher Ausdruck da genau passt, dafür fehlt mir jetzt der Dokumenthintergrund.

__________________

Windows 7, Windows 10, Office 2002, Office 2010
halweg ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 12:11   #3
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Daniel,

die Forumssoftware lässt Links auf das von dir gewünschte Forum nicht zu. Zerstöre den Link, z.B. durch Einfügen eines Sternchens statt eines Bindestrichs, dann kann man ihn wenigstens lesen und kopieren.

Außerdem solltest du versuchen, die Eigenheiten deines Suchstrings ein wenig detaillierter zu beschreiben, vor allem was Anzahl und Position (bzw. Reihenfolge) der Unterstriche und &-Zeichen betrifft.

Ist da pro Suchstring immer nur 1 davon enthalten? Kommt immer zuerst das &, gefolgt vom _, oder kann das auch anders sein?

Füge doch ein paar mehr Beispiele ein - positive wie negative.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 12:35   #4
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo halweg, Hallo Gerhard,

danke für eure Antworten.
Der link wäre der folgende: www . office-loesung. de/ftopic426974_0_0_asc . php

Als Möglichkeiten wären die folgenden:
Q_073&AA_05
Q_073&AA-XY_05
Q_073#EJ_&AA_05
Q_073#EJ_&AA-XY_05

Gibt es vielleicht einen Befehl der mir sagt:
Suche mir Q_ und ersetze mir die ganze Zeile, weil sonst nichts in dieser Kopfzeile steht.
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 12:47   #5
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo nochmal,

wenn deine Strings immer mit Q_ beginnen und mit _05 aufhören, langt das:
Q_*_05 (mit Mustervergleich)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 12:59   #6
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Oops, genau das tut es nicht.
Manchmal gibt es ebenfalls Appendixe die dann hinten dran mit /001 etc. gekennzeichnet werden, sprich:
Q_073#EJ_&AA-XY_01/001
Q_073#EJ_&AA-XY_05/005

Geändert von Wurzaaa (07.02.2018 um 13:14 Uhr).
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 14:42   #7
halweg
MOF Koryphäe
MOF Koryphäe
Standard

Na ja, du merkst schon, der Teufel steckt im Detail, solange wir keinen vollständigen Überblick haben, kannst nur du ein funktionierendes Suchmuster aufbauen.
Eine Möglichkeit könnte dabei auch das mehrfache Ersetzen sein, dass ist manchmal einfacher als ein zu komplizierter Suchstring.

__________________

Windows 7, Windows 10, Office 2002, Office 2010
halweg ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 14:59   #8
Gerhard H
MOF Guru
MOF Guru
Standard

Na, wenns wirklich so ist:

"Suche mir Q_ und ersetze mir die ganze Zeile, weil sonst nichts in dieser Kopfzeile steht"

Dann gehts wieder einfach:
Q_*^13
Mit Mustervergleich

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 15:26   #9
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Vielen Dank für eure Antworten.
Das mit den Mustervergleichen funktioniert leider nicht so ganze.
Der implementierte Code, ist wie folgt:

Code:

    Search = "Q_*^13"
    Replace = "TEST"
Diesen Mustervergleichssuche "Q_*_05" habe ich auch probiert, hat aber leider ebenfalls zu keinem Ergebnis geführt.
Muss eventuell noch eine Einstellung erbracht werden?
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 07.02.2018, 20:35   #10
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo nochmal,

Search = "Q_*^13"
Replace = "TEST
"
gibts nicht in den von dir verlinkten Beispielen. Da heißen die Variablennamen "suche" und "ersetze". Hast du das angepasst?

Bei deiner Sorte Suchbegriff musst du .MatchWildcards = true setzen

Ferner: Sei halt nicht so sparsam mit Informationen:

Welche Kopfzeilen willst du durchsuchen? Nur die allgemeine oder auch die von Erste Seite anders oder von Gerade / ungerade Seite? Nur im Abschnitt 1 oder in allen Abschnitten?

Außerdem: Bist du derjenige, der am Ende der Diskussion erklärt, dass er Textfelder in der Kopfzeile hat? Wenn ja: Welche Sorte Textfelder ist das?

Am besten, du lädst uns mal ein Mustrdokument hoch, anhand dessen du die Fragen beantworten kannst.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 14:46   #11
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Hallo Gerhard,

vielen Dank für deine Hilfe. Mit folgendem Code hat es geklappt:

Code:

Search = "Q_*^13"
Replace = "TEST"
und

Code:

Private Sub ReplaceHeader(rng As Range, Search As String, Replace As String)

    With rng.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = Search
        .Replacement.Text = Replace & vbNewLine
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = True
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
    
End Sub
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 15:11   #12
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Etwas ist doch noch Offen.
Beim Einsetzen des Texts ändert sich der Zeilenabstand der Zeile (s. vorher *_001 und nachher *_002 Bild), welches die Formatierung durcheinander bringt.
Angehängte Grafiken
Dateityp: png Forum_001.PNG (35,4 KB, 3x aufgerufen)
Dateityp: png Forum_002.PNG (39,0 KB, 3x aufgerufen)
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.02.2018, 17:47   #13
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Daniel,

erstens würde ich nie Variablennamen mit VBA-Schlüsselwörtern benennen. Replace ist ein Argument im Zusammenhang mit dem Find-Objekt, und wenn du nun deine Variable auch so nennst, kann es schon mal Verwirrungen geben. Also machs doch so wie im Original, also so:
suche = "Q_*^13"
ersetze = "TEST"


Das ist zwar vermutlich nicht ursächlich für das Problem, und ich hab keine Ahnung, wie durch das Makro, soweit es mir einsehbar war, ein veränderter Zeilenabstand rauskommen soll. Wenn da noch nicht irgendwo ein unbekannter Makroteil rumschwirrt?

Aber da ist noch was anderes: Wenn du aber in der Kopfzeile deinen Suchbegriff raus haben willst und durch nichts respektive durch "TEST" ersetzt haben willst, dann ist das & vbNewLine ja überflüssig bis störend.

Die Zeilen würden dann also nicht so lauten:
Code:

.Text = Search
.Replacement.Text = Replace & vbNewLine
Sondern so:
Code:

.Text = suche
.Replacement.Text = ersetze

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.03.2018, 13:55   #14
Wurzaaa
Threadstarter Threadstarter
MOF User
MOF User
Standard

Ich muss dieses Thema kurz wieder aufblühen, da ich lange nicht mehr an diesem Thema gearbeitet habe.

Leider klappt das nicht so ganz mit den Textmarken, siehe Anhänge.

Damit die Textmarken in der Kopfzeile auch richtig benutzt werden, haben wir die "Anordnung", dass wir immer vor dem letzten Zeichen schreiben sollen und dann erst den letzten Character löschen, damit die Textmarke erhalten bleibt, sprich:

Bei einem Zeichensatz: Q_073#EJ_&AA-XY_05/005
vor der 5 in /005 drücken und schreiben.
Das davor und das letzte Zeichen löschen, damit die Textmarke richtig funktioniert.

Frage: Kann man in der Suche sagen, sowas wie:
Suche mir ab Q_ bis zum vorletzten Zeichensatz und ersetze mir und lösche mir letztes Zeichen?

Auf eine Hilfe freue ich mich schon jetzt. Vielen Dank im Voraus.
Angehängte Grafiken
Dateityp: png Forum.PNG (27,6 KB, 2x aufgerufen)
Dateityp: png Forum_001.PNG (23,2 KB, 2x aufgerufen)
Wurzaaa ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 02.03.2018, 15:01   #15
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Daniel,

ich weiß nicht, was eure merkwürdige Anordnung mit deinem Makro zu tun hat (das ist doch eine Vorschrift, händisches Ändern betreffend?)

Was ich ahne, ist, dass bei deinem bisherigen Makro die Textmarke zerstört wird. Wissen tu ich es nicht, weil ich nicht erkennen kann, wie die Variable rng definiert ist.

Ich nehm an, dass das einfachste wäre, das Verschwinden der Textmarke erst mal in Kauf zu nehmen, und sie hernach wieder herzustellen. Aber ich bin mir nicht mal sicher, ob meine Diagnose stimmt.

Kurzum: Lad ein Musterdokument (kein Bild, kein PDF) mit deinem bisherigen vollständigen Makro drin hoch und erkläre anhand des Musterdokuments bitte nochmal, was aus dieser Q_ -Zeichenfolge gelöscht und was bzw. wo statt dessen was eingefügt werden soll.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:40 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.