Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VB-Makro für Selektion in Word nach Format (https://www.delphipraxis.net/14461-vbulletin-makro-fuer-selektion-word-nach-format.html)

scouty 9. Jan 2004 18:40


VB-Makro für Selektion in Word nach Format
 
Also, ich brauche ein Makro, mit dem ich in einem Worddokument nur Textteile einer bestimmten Farbe makieren kann und dann ändern.

Ich bin in der VisualBasic-Syntax nicht so bewandert, darum habe ich mir zunächst ein Makro mit dem Recorder zusammen gekaspert, welches ich mir dann entsprechend modifiziert habe. Dieses läuft auch ganz gut, in einem einfachen Dokument (Textdokument eine Seite nur Text). Will ich jedoch größere Dokumente mit Grafiken und anderen Objekten modifizieren, dann hängt sich der Rechner auf. Kann man an also dieses Makro soweit verbessern, dass es auch bei umfangreicheren Dokumenten funktioniert. Das z.b. anstelle von „Select.WholeStory“ nur der Text im Dokument markiert wird und die Objekte ignoriert werden.

Hier meine kleine Routine:

Code:
   Dim i
    i = 0 

   Selection.WholeStory
   
   While i < Selection.Characters.Count
      i = i + 1 
      If Selection.Characters.Item(i).Font.Color = wdColorBlue Then _ Selection.Characters.Item(i).Font.Name = "Graphit Light"
    Wend
Schon mal vielen Dank im Voraus

PS.: Wenn einer eine Idee hat, wie man in Word das gleiche auch ohne Makro erreichen kann, wäre mir auch sehr geholfen.

[edit=sakura] [code]-Tags gesetzt. Mfg, sakura[/edit]

scouty 9. Jan 2004 19:50

Re: VB-Makro für Selektion in Word nach Format
 
...nach langem hin und her probieren, habe ich dann doch noch eine lösung gefunden, die zumind. meine Zwecke erfüllt. Der erfahrene VB-Progammierer mag zwar über diese umfangreiche Routine im Verhältnis zur zuerfüllenden Aufgabe den Kopf schütteln, aber es läuft. Ihr könnt mir natürlich immer noch bessere alternative Lösungen liefern, denn ich lerne auch in VB gerne dazu...

Code:
With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Name = "Symbol"
    .Font.Color = wdColorBlue
    .Format = True
    .Replacement.ClearFormatting
    .Replacement.Font.Color = wdColorBrown
    .Execute Forward:=True, Replace:=wdReplaceAll, _
        FindText:="", ReplaceWith:=""
End With

With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Color = wdColorBlue
    .Format = True
    .Replacement.ClearFormatting
    .Replacement.Font.Name = "Geogia"
    .Execute Forward:=True, Replace:=wdReplaceAll, _
        FindText:="", ReplaceWith:=""
End With

With ActiveDocument.Content.Find
    .ClearFormatting
    .Font.Name = "Symbol"
    .Format = True
    .Replacement.ClearFormatting
    .Replacement.Font.Color = wdColorBlue
    .Execute Forward:=True, Replace:=wdReplaceAll, _
        FindText:="", ReplaceWith:=""
End With
Greetings Joerg

[edit=sakura] [code]-Tags gesetzt. In Zukunft bitte selbst erledigen. Mfg, sakura[/edit]


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz