MS-Office-Forum
Google
   

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

Banner und Co.

Antworten
Ads Der Renner, 11 Entwicklertools für Access, Tipps & Trick und offene Datenbanken zum einzigartigen Preis.
Themen-Optionen Ansicht
Alt 04.12.2017, 23:56   #1
StokE_182
Neuer Benutzer
Neuer Benutzer
Standard Word 2010 - Abfrage restliches Dokument durchsuchen verneinen

Hallo,
ich habe Word-Dokumente in denen doppelte und mehrere Leerzeichen vorkommen, die ich durch ein Makro entfernen lassen möchte.
Kleine Besonderheit: Zu Beginn des Dokuments gibt es eine Position, in der das doppelte Leerzeichen NICHT entfernt werden soll, da es Teil eines Namens ist.

Ich kann aber genau vorhersagen ab wo die doppelten Leerzeichen beginnen, bzw. entfernt werden sollen.
Mit Hilfe des Makro-Rekorders habe ich jetzt das folgende Makro aufgenommen:
Code:

LeerzeichenLoeschen()

    Selection.Find.ClearFormatting
    With Selection.Find
        .Text = "ABC"
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = True
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False

    End With

    Selection.Find.Execute
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = " {2;}"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindAsk
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchAllWordForms = False
        .MatchSoundsLike = False
        .MatchWildcards = True

    End With

    Selection.Find.Execute Replace:=wdReplaceAll

End Sub
1. Suche nach ABC (weil der Bereich mit den doppelten Leerzeichen sicher mit ABC beginnt).
2. Suche ab hier im Dokument nach mehrfachen Leerzeichen.

Das klappt auch gut. Einziges Problem ist, dass am Ende der Suche die Abfrage kommt, ob ich nicht auch noch den Rest des Dokuments durchsuchen will. Diese Frage will ich automatisch mit "NEIN" beantworten, weiß den Befehl dazu aber nicht.

Hoffe mir kann jemand helfen.


Grüße
StokE
StokE_182 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.12.2017, 08:32   #2
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo stoke,

ersetze das

.Wrap = wdFindAsk
durch das:

.wrap = wdFindStop

Dann wirst du gar nicht mehr gefragt.

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.12.2017, 13:17   #3
StokE_182
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

.wrap = wdFindStop funktioniert leider nicht. Nach erster Recherche vermute ich, dass es daran liegt, dass in diesem Fall nur der markierte Bereich durchsucht wird (was nach dem derzeitigen Marko lediglich "ABC" umfasst).

Ich hätte jetzt 2 Ideen wie es trotzdem laufen könnte:
A: Suche nach "ABC" und markiere anschließend den kompletten Absatz.
oder
B: Suche nach "ABC" und markiere den gesamten Berich bis "XYZ" auftaucht (ich weiß nämlich auch wie der letze Ausdruck der Zeile lautet).

Kann mir bitte nochmal jemand helfen was hier besser wäre und wie ich es ins Makro einbauen kann?

Viele Grüße
StokE
StokE_182 ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 05.12.2017, 14:44   #4
Gerhard H
MOF Guru
MOF Guru
Standard

Hallo Stoke,

dann probier mal folgendes Makro:
Code:

Sub vonABCbisEnde()
Dim gesamtbereich As Range, suchbereich As Range
Dim suchbereichAnfang As Long, suchbereichEnde As Long
Dim korrigierterText As String

'im gesamten Dokument nach dem ersten Vorkommen von "ABC" suchen
Set suchbereich = ActiveDocument.Range

    With suchbereich.Find
        .Text = "ABC"
        '.Replacement.Text = "" 'hier wird das ABC gelöscht.Absicht?
        'Ansonsten folgende Zeile nehmen:
        .Replacement.Text = "^&"
        .Execute Replace:=wdReplaceOne
    End With
    
'Fundstelle als neuen Suchbereichsanfang festlegen
suchbereichAnfang = suchbereich.End
suchbereichEnde = ActiveDocument.Range.End
suchbereich.SetRange suchbereichAnfang, suchbereichEnde

    With suchbereich.Find
        .MatchWildcards = True
        .Text = " {2;}"
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
    End With
End Sub
Wenn es dir möglich ist, vor dem ABC eine Textmarke zu setzen, vereinfacht sich das Makro wie folgt:
Code:

Sub vonTextmarkeBisEnde1()
Dim suchbereich As Range
Dim suchbereichAnfang As Long, suchbereichEnde As Long
Dim korrigierterText As String

    With ActiveDocument
        suchbereichAnfang = .Bookmarks("BereichAnfang").Range.End
        suchbereichEnde = .Range.End
        Set suchbereich = .Range(suchbereichAnfang, suchbereichEnde)
    End With
    
    With suchbereich.Find
        .MatchWildcards = True
        .Text = " {2;}"
        .Replacement.Text = " "
        .Execute Replace:=wdReplaceAll
    End With
End Sub
Beide Makros sind im angehängten Musterdokument enthalten.
Angehängte Dateien
Dateityp: docm inBereichSuchen.docm (32,2 KB, 0x aufgerufen)

__________________

Gruß
Gerhard
Gerhard H ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 08.12.2017, 09:57   #5
StokE_182
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo,

Vielen Dank für die Hilfe, und den Hinweis, dass das "ABC" gelöscht wird. das sollte nicht so sein.

Den Bereich über Textmarken zu definieren geht in diesem Fall nicht, da der zu durchsuchende Text ursprünglich komplett aus Textmarken bestand, die dann durch Text ersetzt und somit gelöscht wurden. Ich müsste also dann nochmal wieder die Textmarken neu definieren.
Der erste Lösungsvorschlag funktioniert aber wie gewünscht.

Viele Grüße
StokE
StokE_182 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 09:46 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-2010 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günther Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.
Beachten Sie bitte auch unsere Nutzungsbedingungen.