RTF-Datei, Blöcke mittels Shortcurt vergrößern?

Nightmare85

Captain
Registriert
Apr. 2007
Beiträge
3.712
Hallo,

aus einem Programm werden RTF-Dateien erzeugt.
In diesen Dateien sind mehrere Zeilen untereinander geschrieben.
Im Gegensatz zu normalen Textdokumenten befindet sich jede Zeile in einem Block.
(Anhang 1)

Ich muss bestimmte Begriffe mittels Suchen und Ersetzen ändern.
Ist der neue Begriff länger als der alte, wird nichts mehr angezeigt, da der Block zu klein ist.
Das heißt ich muss vorher erstmal alle Blöcke etwas breiter machen.
Mit der Maus ist das kein Problem, aber da ich dies in einem Makro realisieren muss,
brauche ich eine Möglichkeit, dies mit der Tastatur umzusetzen.
(Anhang 2)

Hat jemand eine Idee?

Grüße
 

Anhänge

  • RTF_01.jpg
    RTF_01.jpg
    60,7 KB · Aufrufe: 247
  • RTF_02.jpg
    RTF_02.jpg
    60 KB · Aufrufe: 232
Nightmare85 schrieb:
Ist der neue Begriff länger als der alte, wird nichts mehr angezeigt, da der Block zu klein ist.

Die Stelle verstehe ich nicht so ganz. Die Suchen-und-Ersetzen-Funktion interessiert doch die Größe von Textfeldern gar nicht.

Ins Blaue geraten: Mit Notepad++ öffnen, Ansicht → Nicht druckbare Zeichen → Alle Zeichen anzeigen. Vielleicht findest du damit ein Muster, das du verwenden kannst, um Suchen-und-Ersetzen damit zu füttern. Notepad++ beherrscht auch die Suchen nach Zeilenumbrüchen usw.
 
Nightmare85 schrieb:
Ist der neue Begriff länger als der alte, wird nichts mehr angezeigt, da der Block zu klein ist.

DeusoftheWired schrieb:
Die Stelle verstehe ich nicht so ganz. Die Suchen-und-Ersetzen-Funktion interessiert doch die Größe von Textfeldern gar nicht.

Hab es auch nicht optimal formuliert.
Beispiel:
Alle Blöcke sind so breit, dass maximal 5 Zeichen passen.
Ersetze ich dann angenommen "Hallo" durch "Guten Tag", wird nichts mehr angezeigt,
da der Text nicht in den Block passt.
(Das ist nicht gewollt.)

Um dieses Problem zu beheben, muss der Block also etwas breiter gezogen werden,
so dass mehr Zeichen reinpassen.

Die Idee mit Notepadd++ hatte ich auch, aber das Problem ist, dass die RTF auch Grafiken enthält.

Grüße
 
Nightmare85 schrieb:
Hab es auch nicht optimal formuliert.
Beispiel:
Alle Blöcke sind so breit, dass maximal 5 Zeichen passen.
Ersetze ich dann angenommen "Hallo" durch "Guten Tag", wird nichts mehr angezeigt,
da der Text nicht in den Block passt.
(Das ist nicht gewollt.)

Um dieses Problem zu beheben, muss der Block also etwas breiter gezogen werden,
so dass mehr Zeichen reinpassen.

Okay, jetzt hab ich’s verstanden.

Nightmare85 schrieb:
Die Idee mit Notepadd++ hatte ich auch, aber das Problem ist, dass die RTF auch Grafiken enthält.

Hrm, mit Graphiken wird’s schwierig.

Mir fällt jetzt spontan nur ein, sämtliche Textfelder auf das zu verbreitern, was du maximal wegen „Guten Tag“ o. Ä. brauchst, und danach Suchen-und-Ersetzen durchlaufen zu lassen.
 
Genau, so ist auch meine Idee.
Allerdings muss dies mit einem Makro geschehen.
Der Grund ist, dass täglich RTF-Dateien von dem Programm erzeugt werden,
die derzeit immer händisch bearbeitet werden müssen.
Dies ist mühsam; daher soll ein Makro ran.

Ich kann die verschiedenen Textblöcke/Textfelder zwar mit den Pfeiltasten anwählen
(um angenommen darin enthaltenen Text zu markieren/zu verändern)
aber bisher hab ich noch nicht herausgefunden, wie ich solch ein Feld markiere.

Mit der Maus geht's ja easy, aber bei der Word-Makro-Aufzeichnung scheint die Maus deaktiviert zu sein...

P.S: Wenn ich das RTF in DOC bzw. DOCX umwandle, bleibt die Textfeld-Logik weiterhin bestehen.

Grüße
 
Wenn es täglich ist und die Dateien vom Aufbau her identisch sind, kann man das vielleicht mit AutoIt lösen. Muß nicht geskriptet werden, bietet auch eine Aufzeichnungsfunktion an.
 
Wenn das RTF in Word geöffnet wird ist die Normal.Dotm als Makrocontainer zur Stelle. Es sollte (ich hab da in einem Punkt keine Erfahrung) machbar sein alle Objekte abzulaufen und über deren Typ Textboxen [Textfelder sind für mich Formular-Elemente] zu erkennen die dann um bestimmte Margen verbreitert werden. (Gibts gar ein AutoFit? Dann böte sich dies nach dem ersetzen als finaler Rumdumschlag an.)
Suchen & Ersetzen müsste dann mit den Inhalten dieser Treffer (oder geht das textboxübergreifend; mach das zu selten) auch noch im selben Lauf zu erledigen sein.

Ich vermute mal an der Erzeugung der RTFs ist nichts zu drehen; keine Vorlage die man ändern könnte, keine Voreinstellungen?

CN8
 
Brauchst du die TextBoxen überhaupt?
Vielleicht solltest du das Ganze in Word bearbeiten und dabei da TextBoxen zunächst entfernen? Ggf. per Word-Makro.
 
Hi Leute.

@DeusoftheWired:
AutoIt klingt nach einer interessanten Lösung, aber es könnte problematisch werden,
da die Datei auf einem Server liegt und dort bearbeitet wird.
Heißt man müsste wenn dann die Datei erstmal lokal kopieren.
Und das AutoIt auf den Server zu installieren (oder nur das Skript), weiß nicht, ob das klappen wird.

@cumulonimbus8:
Dein Beitrag hat mich auf eine andere Idee gebracht.
Ich habe die von dem Programm erzeugten Begriffe (die später geändert werden müssen),
künstlich in die Länge gezogen.
Die fingen mit einem Stern an (quasi als Stichpunkt).
Hab jetzt noch 2 Sterne hinzugefügt, wodurch jeder Begriff 2 Zeichen länger ist.
Dies würde das Problem prinzipiell schon lösen.

Man muss hier aber noch was differenzieren:
Diese Textblöcke sind tatsächlich keine Textfelder.
Wenn ich ein Textfeld hinzufüge und markiere, steht oben Text Box tools.
Markiere ich aber einen Textblock, erscheint nichts mit Text Box tools.

@halwe:
Wenn es nach mir geht, sollten diese Textblöcke aus allen RTFs verschwinden,
die durch das Programm erzeugt werden.
Ich verstehe wirklich nicht, was der Mist soll.
Das bringt irgendwie nur Probleme statt Vorteile.

Deine Idee finde ich gut, aber das wird denke ich sehr schwierig.
Bestimmte Informationen müssen erhalten bleiben.
Wenn ich diesen Block lösche, ist auch der Inhalt weg.

--------------------------------------------
Ich hoffe mal dass das künstliche Verlängern einiger Begriffe das Problem lösen wird.
(Auch wenn es nicht die beste Lösung ist - evt. mache ich Leerzeichen statt der 2 Sterne.)

Grüße
 
Na ja, ich meinte natürlich, nur den Rahmen entfernen (zumal, wen du den nicht brauchst), nicht den Text. Schieb doch mal ne Muster .rtf rüber, mal sehn, was man machen kann.
 
Nightmare85 schrieb:
Ich habe die von dem Programm erzeugten Begriffe (die später geändert werden müssen),
künstlich in die Länge gezogen.
Die fingen mit einem Stern an (quasi als Stichpunkt).
Hab jetzt noch 2 Sterne hinzugefügt, wodurch jeder Begriff 2 Zeichen länger ist.
Dies würde das Problem prinzipiell schon lösen.

Grüße

Das hört sich an als hättest du doch die Möglichkeit in die RTF Erzeugung einzugreifen? Warum setzt mich gleich hier die neuen Wörter dann ist gar kein ersetzen mehr notwendig.
 
@halwe:
Es wird automatisch das Wort mitgelöscht.
Gibt keine Chance, den Rahmen/Textblock zu löschen, ohne dass der Inhalt in Mitleidenschaft gezogen wird.

@M-X:
Bei den RTF-Dateien handelt es sich um bestimmte Testzertifikate,
die für 2 verschiedene Produkte verwendet werden.
Da für 1 Produkt leider die Begriffe fehlen und es vorerst keine Möglichkeit gibt,
diese Option ins System einzufügen, muss dies nachträglich gemacht werden.

Bisher hatte der Kollege immer das "falsche" Zertifikat als RTF-Datei speichern müssen
und alles händisch anpassen müssen, dass es für Produkt 2 verwendet werden kann.

Als "Übergangslösung", bis auch das 2. Produkt richtig in dem System hinterlegt ist,
soll ein Makro die RTF eben so anpassen, dass kaum noch händisch was gemacht werden muss.

Grüße
 
Nightmare85 schrieb:
@halwe:
Es wird automatisch das Wort mitgelöscht.
Gibt keine Chance, den Rahmen/Textblock zu löschen, ohne dass der Inhalt in Mitleidenschaft gezogen wird.
Dann kopier' doch alles und füge es als "nur-Text" wieder ein.
 
Das Problem ist, dass das nicht so einfach geht.
Bei normalen Word-Dokumenten kann man z.B. einen Doppelklick machen, so dass der Cursor dort hinspringt.
Bei diesen RTF-Dateien geht das nicht.
Es ist irgendwie alles total eingeschränkt.

Wenn ich wirklich alles markiere und lösche, kann ich normal arbeiten, allerdings fehlen:
a) Grafiken
b) Wichtige Informationen, die man nicht per Makro einfügen kann

Wenn ich alles lösche, ist außerdem kein Rand definiert.

Hab mal die Datei hochgeladen und die Begriffe durch Ziffern/Buchstaben ersetzt.
Die Struktur ist in den originalen RTF-Dateien zu 100% identisch.

Grüße
 

Anhänge

Das Dokument besteht, in Word geöffnet, aus einer Reihe überlappender Positionsrahmen. Diese könnte man (ggf. auch automatisch) entfernen, du kommst aber schneller dahin, wenn du das Dokument mit WordPad öffnest (und neu speicherst).
Eine Vergrößerung der Positionsrahmen bringt wenig, da sie sich überlappen.
Falls du das doch unbedingt willst, kannst du so was wie hier tun:

Code:
Sub a()
Dim posrahmen As Frame
  For Each posrahmen In ActiveDocument.Frames
    Debug.Print posrahmen.Range.text
    posrahmen.Width = CentimetersToPoints(5)
    
  Next posrahmen
End Sub
Durch Abfrage des Textes kannst du selektiv vergrößern.
Würde aber nur Sinn machen, wenn die erzeugten Dokumente immer gleich aufgebaut sind.
 
Zurück
Oben