Word VBA - Transparenz bei Formatvorlage

Moderator: ModerationP

Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 21. Jul 2021, 10:19

Hallo,

ich möchte in Word per VBA die Schrift halbtransparent (50 %) machen.

Wenn ich einen Textteil markiert habe, dann funktioniert der folgende Code:
Code: Alles auswählen
Selection.Font.Fill.Transparency = 0.5


Nun möchte ich die Transparenz aber auf alle Instanzen einer Formatvorlage mit dem Namen "Test" anwenden. Dazu könnte man zuerst alle Instanzen markieren und dann obigen Code anwenden, oder die Formatvorlage selbst ändern. Beides bekomme ich aber nicht hin.

Der Code zum Ändern der Formatvorlage sieht bei mir so aus (funktioniert aber nicht):
Code: Alles auswählen
With ActiveDocument.Styles("Test").Font
       .Fill.Transparency = 0.5
End With


Sollte es hierfür keine Lösung geben, wie kann ich denn alle Instanzen der Formatvorlage "Test" per VBA markieren, um dann obigen Code anzuwenden?
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 21. Jul 2021, 20:09

Also, die Frage ist ja die, warum du die mit der FV formatierten Teile unbedingt markieren willst.
Stell das in der FV ein und gut ist. Alle die damit beglückt sind, werden in einem Rutsch formatiert.
Über VBA müsstest du eine Schleife bauen, das geht auch nicht schneller.
Code: Alles auswählen
Sub transp()

Dim dd1 As Document: Set dd1 = ActiveDocument
Dim ddS As Style, p As Paragraph
Set ddS = dd1.Styles("stil") 'hier setzt du deine FV namentlich ein
    For Each p In dd1.Paragraphs
        If p.Style = ddS Then
          p.Range.Font.Fill.Transparency = 0.3
        End If
   
    Next p
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 22. Jul 2021, 11:30

Die Idee ist genial und so mache ich es auch "manuell", aber leider funktioniert das Makro bei mir nicht.
Ich habe den Namen der FV zwar angepasst, aber es tut sich leider nichts. Was mache ich falsch?
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 22. Jul 2021, 11:59

Das kann ich so nicht sehen. Vermutlich den Namen der FV eingetippt. Kopier ihn mal und füg ihn dann ein.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon HKindler » 22. Jul 2021, 12:08

Hi,

genau wie Theo stelle ich mir die Frage, was das überhaupt soll? Ändere doch einfach die Transparenz in der Formatvorlage. Genau dafür sind Formatvorlagen doch gedacht: an zentraler Stelle alles so wie gewünscht einstellen. Dabei ist es egal, ob du rote Schrift, Schriftgröße 24pt, Zeilenabstand 1,5 und Transparenz 21% haben willst. Einfach in der Formatvorlage so einstellen und gut ist's. Und wenn du morgen dann blaue statt roter Schrift haben willst, änderst das einfach in der Formatvorlage.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6296
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 22. Jul 2021, 17:04

Es hat natürlich einen sinnvollen Grund:

Ich möchte mit Hilfe dieses Makros Arbeitsblätter erstellen. Auf einen Knopfdruck sollen die Lösungen ausgeblendet werden, die Abstände zwischen den Wörtern und damit die Gestaltung des Arbeitsblatts aber erhalten bleiben. Evtl. Soll der Unterstrich auch erhalten bleiben, so man in der entstehenden Lücke eine Hilfslinie hat. Die Transparenz wird dazu auf 100% gesetzt. Nur so wird der Lösungstext auch bei einem farbigen Hintergrund nicht angezeigt.

Die Beispieldatei mit dem Makro von oben habe ich hier angefügt. Hier sieht man, dass beim Ausführen des Makros nichts passiert.
Ich kann hier nur keine .docm-Datei hochladen, deshalb eine normale .docx-Datei und das Makro müsste noch reinkopiert werden, um es zu testen.

Der manuelle Weg wäre: Formatvorlage "Lückentext" - ändern - Format - Texteffekte - Textfüllung - Transparenz: 100%

Code: Alles auswählen
Sub Lösung_ausblenden()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim ddS As Style, p As Paragraph
Set ddS = dd1.Styles("Lückentext") 'hier setzt du deine FV namentlich ein
    For Each p In dd1.Paragraphs
        If p.Style = ddS Then
          p.Range.Font.Fill.Transparency = 1
        End If
   
    Next p
End Sub


Danke schon mal für die bisherigen Hilfestellungen !!! Ich würde gerne per VBA die Formatvorlage selbst ändern, wenn das geht. Um die Lösung dann wieder einzublenden muss man ja das gleiche Makro mit Transparency = 0 ausführen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 22. Jul 2021, 19:30

Ich habe das gleiche Problem in einem anderen Forum gestellt und dort erfahren, dass man dann die Foren gegenseitig verlinkt. Hier ist der Link zum anderen Forum:
https://www.ms-office-forum.net/forum/showthread.php?p=2040093&posted=1#post2040093

Trotzdem würde mich interessieren, wie ich obigen Code zum Laufen bekomme, so dass man die Formatvorlage ändern kann. Das wäre meiner Meinung nach die praktikabelste Lösung.
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 22. Jul 2021, 21:27

Tja, da sieht man mal wieder, dass ein TestDok mehr wert ist als hundert mal drumrumgeredet.
Du hast hier ja keine Absatzformatvorlage sondern eine Zeichenformatvorlage.
Gruselige kleine Dinger.
Und dann noch ein kleine Gemeinheit: du hast noch ein paar Grafiken drin. Das ist noch spaßiger. Da ist die händische Variante die schnellste und einfachste, denn die kommt auch in die verzwickten Verschachtelungen des Dokuments.
Klar, dass dann das einfach durchschleifen der Absätze nicht mehr reicht.
Code: Alles auswählen
Sub transZ()
'transparantieren
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim rngF As Range, shP As Shape
Set rngF = dd1.Content
    rngF.Find.ClearFormatting
    rngF.Find.Style = ActiveDocument.Styles("Lückentext")
   
    With rngF.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
    End With
    rngF.Find.Execute
    Do While rngF.Find.Found = True
      rngF.Font.Fill.Transparency = 1
      rngF.Find.Execute
    Loop
'das sind jetzt deine Shapes, wenn inline-shapes dabei sind, dann muss man das noch erweitern.
If dd1.Shapes.Count > 0 Then
For Each shP In dd1.Range.ShapeRange
Set rngF = shP.TextFrame.TextRange
    rngF.Find.ClearFormatting
    rngF.Find.Style = ActiveDocument.Styles("Lückentext")
   
    With rngF.Find
        .Text = ""
        .Replacement.Text = ""
        .Forward = True
        .Wrap = wdFindStop
        .Format = True
    End With
    rngF.Find.Execute
    Do While rngF.Find.Found = True
      rngF.Font.Fill.Transparency = 1
      rngF.Find.Execute
    Loop
   
 Next shP
 
 End If
End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 22. Jul 2021, 23:07

Vielen Dank für deine Mühe. Ich versuche jetzt gerade erst einmal die ganzen Codes zu verstehen.

Ich dachte, es geht ganz einfach. Zuvor hatte ich den Code:
Code: Alles auswählen
With ActiveDocument.Styles("Lückentext").Font
   .TextColor.Brightness = 0
End With
ActiveDocument.Styles("Lückentext").BaseStyle = "Lösung"


Da hat ja alles problemlos funktioniert. Mit dem Nachteil, dass die Schrift nicht transparent, sondern weiß wurde. Ich dachte das hätte sich einfach auf eine transparente Schrift umwandeln lassen.
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 23. Jul 2021, 05:58

Ja,der Code würde auch funktionieren wenn du zwei FV für die Doks anlegst.
Eine mit Transparenz, eine ohne. Dan müsste das Makro die beiden nur austauschen.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon HKindler » 23. Jul 2021, 07:27

Hi,

ich habe das Problem für mich mit ausgeblendetem Text gelöst. Man muss dabei nur aufpassen, dass Zeilenvorschübe nicht ausgeblendet werden (ist also nicht wirklich für Fließtexte geeignet). Eine Makrolösung ist bei uns leider nicht möglich, da aus Sicherheitsgründen in Word Makros generell gesperrt sind.

Dazu habe ich mir eine Formatvorlage erstellt, die das Attribut "ausgeblendet" gesetzt hat und die Schriftfarbe auf Blau setzt, so dass man schnell sieht, welcher Text wahlweise ausgeblendet werden kann. Somit kann man während des Schreibens schnell bestimmen, was sichtbar sein soll und was nicht. Aus- und einschalten kann man den Text dann einfach, indem man die Steuerzeichen anzeigen lässt oder auch nicht.

Ich habe dazu auch eine kleine Anleitung für den internen Gebrauch verfasst (siehe Anhang).
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Gruß,
Helmut

----------------------------
Windows 10 Enterprise (64 Bit) / Office 365 ProPlus (32 Bit)
Benutzeravatar
HKindler
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6296
Registriert: 04. Jul 2013, 09:02
Wohnort: Schwarzwald

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 23. Jul 2021, 20:42

Die Lösung der Lösung mit ausgeblendetem Text verwende ich auch. Allerdings bei Lückentext mit Tabellen. Baue die dann schon so auf, dass das dann mit Zeilen so geht, dann hat man auch die Möglichkeit das mit Zeilen zu versehen.
Gut, ist für Fließtext nicht unbedingt prickelnd und die Idee mit dem transpararenten Text ist ja auch im Grundsatz gut. Es ist halt nur so, dass das Objektmodell es nicht vorsieht, dass das programmatisch geändert wird.
Zumindest habe ich bisher keine Lösung dafür gefunden. (Vielleicht kann man das im XML ändern?, da ist diese Eigenschaft definiert)
Da ich immer einfach Lösungen bevorzuge, würde ich in deinem Fall die beiden Formatvorlagen "EIN" und "AUS" definieren, die eine mit, die andere ohne Transparenz.
In den Formatvorlagen kannst du die dann in der Liste ganz oben einbauen, dass die im Schnellauswahlkatalog gleich zu sehen sind, dann können die Kollegen das auch mit grauem Star gleich erkennen. Die Lücke doppelklicken und die FV wechseln.

Um alle wieder einzublenden kannst du ja mein Makro verwenden.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 24. Jul 2021, 15:17

Vielen Dank für die vielen Hinweise.

Ich habe noch eine Frage an theoS. Das Makro funktioniert ja prinzipiell gut, nur bei dieser Datei (siehe Anhang) kommt eine Fehlermeldung. Ich habe schon andere Tabellen mit Formeln ausprobiert, da geht es. Woran könnte das denn liegen?

Einfach das Makro von Theo hinzufügen mit der Formatvorlage: Lösung
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon theoS » 24. Jul 2021, 20:33

Okay, das kann dann nur an der Tabelle liegen.
Du hast die letzte Formatierung nicht im Text, sondern in der Tabelle. Damit kommt die Suche offenbar nicht so klar, wie wir uns das wünschen.
Dadurch geht bei mir zumindest, der Code in eine Dauerschleife. Fehlermeldung konnte ich keine provozieren, aber vielleicht läuft bei dir irgendwann der Speicher über.
Es gibt jetzt einen einfachen Workarround, den ich zumutbar finde. Der besteht darin, dass du mindestens 1 Buchstaben außerhalb der Tabelle mit der FV formatierst. Dann steigt das Makro ordnungsgemäß aus.
Alternativ kannst du in dem Code die Konstante "wdFindStop" durch "wdFindAsk" ersetzen (2 Stellen) dann kommt am Ende die Frage ob das am Anfang wieder fortgeführt werden soll mit der Suche.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 5722
Registriert: 19. Apr 2008, 00:14

Re: Word VBA - Transparenz bei Formatvorlage

Beitragvon mich.l » 25. Jul 2021, 16:21

Ich habe anscheinend immer noch zu viele verschiedene Objekte in meinen Dateien, so dass immer wieder andere Fehlermeldungen kommen. Ich hatte es mir einfacher vorgestellt.

Ich würde jetzt doch mein Makro einsetzen und mich dann hier auf einen weißen Hintergrund beschränken.

Lässt sich denn das Makro von TheoS so anpassen, dass es NUR für Tabellen funkioniert, d.h. dass es nur nach Formatvorlagen in einer Tabelle nachsieht und diese dann transparent macht? Vielleicht läuft das ja stabiler? Dann kann man beide Makros kombinieren und so sicher zum Ziel kommen. In den Tabellen soll dann auch in einer Zelle nur Text der Formatvorlage stehen dürfen und nach der Tabelle nicht zwingend noch ein Text mit dieser FV folgen müsssen.
mich.l
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7
Registriert: 21. Jul 2021, 10:05

Nächste

Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: MarkMH_K und 4 Gäste