![]() |
Word Makro zum markieren
Hi Leute,
Ich will ein Word-makro schreiben :coder: , das folgendes tut: 1) Erhalt der Schriftgröße (eingegeben durch den Benutzer in einer Textbox) 2) Markieren des Textes ab erstem Erscheinen dieser Schriftgröße, bis genau vor dem zweiten Erscheinen dieser Schriftgröße. (Von einer Überschrift, bis genau vor die nächste Überschrift) 3) Diesen markierten Text ausschneiden und in ein neues Dokument kopieren. 4) Nur die Schrift im neuen Dokument markieren, die in Schriftgröße (s.o.) geschrieben ist. 5) Diese schrift kopieren und die Datei mit dem Namen dieser herauskopierten Schrift als HTML speichern. Das ist eine sehr komplexe Aufgabe und ich weiß, dass das hier vieleicht der falsche Ort ist, um solche Sachen zu posten, aber das Makro würde mir echt viel Arbeit ersparen, deshlab bin ich für alle Denkansätze und Aufmunterungen dankbar. Falls jemand 'ne gute Seite zur Makro-Programmierung kennt: Bitte Posten :!: :!: :!: tia, cu gordon |
Re: Word Makro zum markieren
Internetseiten fallen mir jetzt auf Anhieb keine ein.
Aber vielleicht kann ich dir helfen, wenn du konkrete Fragen und Probleme hast. Ich habe schon ein wenig mit VBA gearbeitet. |
Re: Word Makro zum markieren
Du könntest dir dieses Forum noch ansehen.
![]() Darin geht es noch um andere Programmiersprachen als Delphi und unter anderem gibt es auch einen Bereich für VB, VBA und VBS. |
Re: Word Makro zum markieren
Hi Cuchulainn,
Erst mal: Die Seite ist echt :thuimb: Hab schon 'ne Anfrage wegen meiner Frage laufen. Meine Fragen 1,3,4 und 5 krieg ich mit viel Schweiß und Arbeit noch selbst hin, aber bei Punkt 2 wird's dann kritisch. :cry: Ich hab leider in dieser Richtung keine Ahnung. Kannst du mir bei dem Punkt helfen? bua, tia, cu gordon |
Re: Word Makro zum markieren
Ist doch ziemlich billig. Einfach mal auf Makro aufzeichnen klicken, Nach Font & Fontgröße suchen, Code abgucken, abändern...
2 min. anschauen & tippen :
Delphi-Quellcode:
Dim FirstPos, SecPos As Integer
FirstPos = -1 SecPos = -1 ActiveDocument.Range(0, 0).Select Do While FirstPos = -1 Or SecPos = -1 With Selection.Find .ClearFormatting .Font.Name = "Courier New" .Font.Size = 20 .Text = "" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = True .MatchCase = False .MatchWholeWord = False .MatchWildcards = False .MatchSoundsLike = False .MatchAllWordForms = False End With Selection.Find.Execute If Not Selection.Find.Found Then Exit Do End If If FirstPos = -1 Then FirstPos = Selection.Start ElseIf SecPos = -1 Then SecPos = Selection.Start End If Loop If FirstPos <> -1 And SecPos <> -1 Then Selection.Start = FirstPos Selection.End = SecPos End If |
Re: Word Makro zum markieren
Der Code funktioniert super, danke! :thuimb:
Allerdings hätte ich noch eine Frage:
Code:
Diese Zeile wird doch ausgelöst, wenn keine Markierung vorgenommen wird, oder?
If Not Selection.Find.Found Then
Exit Do End If |
Re: Word Makro zum markieren
Wenn er die Formatierung (Font oder Font.Size) nicht gefunden hat soll er die Schleife verlassen.
Hat er es nicht 2-mal gefunden -< wird auch nix markiert. |
DANKE;DANKE;DANKE
Vielen Dank!!! Jetzt kann ich endlich weiterarbeiten!!!
Die Antwort war echt :thuimb:, wenn da nur nicht noch dieses eine Frage existierte (s.u.) Man ließt sich, gordon |
Noch eine Frage...
Der Quelltext ist zwar super, ich hätt allerdings noch eine Frage:
Wie schaffe ich es, dass das Makro Leerstellen übergeht. Im Moment ist es so: Wenn ich eine Überschrift habe und darunter eine Leerzeile markiert der Rechner nur die Überschrift, wenn die Leerzeile die selbe Schriftgröße hat. Dabei sollte so weit alle smarkiert werden, bis die nächste Überschrift kommt und nicht eine Leerzeile in Größe einer Überschrift. Ich hoffe du kannst mir noch einmal helfen, da ich schon alle Wände bei mir eingeschlagen habe ( :wall: ) bua, cu, gordon |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz