gelöst VBA Word - dynamische Textformatierung mittels vba in Bausteinkatalogelementen

Mitglied: Pat.bat

Pat.bat (Level 1) - Jetzt verbinden

29.04.2020 um 11:26 Uhr, 399 Aufrufe, 5 Kommentare, 1 Danke

Hallo zusammen,

ich arbeite derzeit an einem Skript, das beim öffnen des Dokuments alle ContentControls sucht und diese farblich markiert. Selektiert der Nutzer nun ein CC, dann wird die Markierung gelöscht. Soweit so gut.

Nun habe ich auch Baustein-Katalog Elemente, wo der Benutzer dann einen Schnellbaustein zu seinem Dokument hinzufügen kann. Diese Schnellbausteine haben aber auch ContentControl-Elemente.
Wie kann ich diese nun auch noch farblich markieren, wenn der Benutzer eins eingefügt hat?

Anbei mal das Skript soweit:

Ist dies überhaupt in Word möglich oder muss ich die Formatierung, also das highlighten der CCs im Schnellbaustein manuell vornehmen und der Benutzer muss dann die Formatierung wieder manuell "löschen"?


Vielen Dank im Voraus
Mitglied: 143728
LÖSUNG 29.04.2020, aktualisiert um 12:12 Uhr
Einfach den Range der den Baustein einfügt erneut im entsprechenden Event auf ContentControls prüfen und markieren
Du kannst das ganze natürlich so weiter treiben bis der Arzt kommt in dem FAll würde ich das das ganze dann in eine rekursive Funktion packen wenn du in den Bausteinen noch weitere Verschachtelungen berücksichtigen willst.
Bitte warten ..
Mitglied: Pat.bat
29.04.2020 um 13:37 Uhr
@cabrinha

vielen Dank, das sieht sehr gut aus.

ich musste nur das ThisDocument zu ActiveDocument ändern, da er im Dokument sonst nicht alles markiert hat, warum auch immer. Und wenn ich den Schnellbaustein hinzufüge, dann gibt es in meinem Beispiel 3 CCs, davon wird aber nur das 3. markiert. Dabei handelt es sich um 2x Type Text und das 3. um den Type Datum.

Noch etwas zum Aufbau der Dokumente. Der User arbeitet mit einem docx Dokument, dieses ist mit einer Dokumentenvorlage (dotm) auf einem Netzwerkpfad verknüpft. Und in diesem dotm sind die Schnellbausteine und das VBA hinterlegt.
Bitte warten ..
Mitglied: 143728
29.04.2020, aktualisiert um 14:03 Uhr
Zitat von Pat.bat:

@cabrinha

vielen Dank, das sieht sehr gut aus.

ich musste nur das ThisDocument zu ActiveDocument ändern, da er im Dokument sonst nicht alles markiert hat, warum auch immer.
Nicht "warum auch immer" die Unterschiede zwischen ThisDocument und ActiveDocument sind dokumentiert, gerade wenn du mit Templates arbeitest kommt das zum tragen! Denn "ThisDocument" verweist wenn es eine Vorlage ist, auf die Vorlage selbst nicht das davon erzeugte neue Dokument.

Und wenn ich den Schnellbaustein hinzufüge, dann gibt es in meinem Beispiel 3 CCs, davon wird aber nur das 3. markiert. Dabei handelt es sich um 2x Type Text und das 3. um den Type Datum.
Klappt hier einwandfrei.
Noch etwas zum Aufbau der Dokumente. Der User arbeitet mit einem docx Dokument, dieses ist mit einer Dokumentenvorlage (dotm) auf einem Netzwerkpfad verknüpft. Und in diesem dotm sind die Schnellbausteine und das VBA hinterlegt.
Dann ist klar das du mit ActiveDocument arbeiten musst s. Hinweis oben.
Bei Verwendung von Vorlagen muss dann auch das Document.New Ereignis statt des Open Ereignisses benutzt werden weil der Default beim Doppelklick auf eine Vorlage die Erzeugung eines neuen Dokuments aus dieser Vorlage ist nicht das Öffnen der Vorlage selbst.
Bitte warten ..
Mitglied: Pat.bat
29.04.2020, aktualisiert um 14:21 Uhr
Hallo,

danke für den Hinweis. Aber wenn ich das Event von Open auf New umstelle, dann markiert er wieder nicht alles im Dokument. Mit Open funktioniert das jetzt schon wie gewollt, allerdings noch nicht beim hinzufügen vom Schnellbaustein über das CC "Baustein-Katalog Inhaltssteuerelement"

@cabrinha

ich verstehe nicht warum er in dem hinzugefügten Schnellbaustein, das letzte CC markiert und die ersten beiden nicht. D.h. er looped ja über alle 3, aber markiert nur das letzte, was ein Datum CC ist. Die Text-CCs mag er nicht.
Bitte warten ..
Mitglied: 143728
29.04.2020, aktualisiert um 15:19 Uhr
Zitat von Pat.bat:
@cabrinha

ich verstehe nicht warum er in dem hinzugefügten Schnellbaustein, das letzte CC markiert und die ersten beiden nicht. D.h. er looped ja über alle 3, aber markiert nur das letzte, was ein Datum CC ist. Die Text-CCs mag er nicht.
Debugger nehmen und Variablen prüfen, vor allem ob die Type Werte mit deiner IF übereinstimmen. Klappt hier problemlos, muss also ein Problem bei deinen Bausteinen sein, wir haben ja dein Dokument nicht vorliegen.
Bitte warten ..
Heiß diskutierte Inhalte
Server-Hardware
Grobes Konzept Hyper-V Storage - Storage für Hyper-V
nachgefragtFrageServer-Hardware19 Kommentare

Hallo Administratoren. Um VHDX-Daten zentral zu halten freue ich mich auf Euren konstruktiven Input. Bisher liegen die VHDX-Daten jeweils ...

Voice over IP
Brother-Fax an Speedport Hybrid funktioniert nicht
gelöst kman123FrageVoice over IP16 Kommentare

Hallo liebes Forum, ich bin neu hier und hätte eine kleine Frage, da ich einfach nicht weiter komme. Sorry ...

Ubuntu
Ubuntu 20.10 "Groovy Gorilla" mit GNOME 3.38 und Kernel 5.8 veröffentlicht
FrankInformationUbuntu14 Kommentare

Canonical hat Ubuntu 20.10 veröffentlicht. Die neue Version mit dem Codenamen "Groovy Gorilla" bekommt lediglich 9 Monaten Sicherheitsupdates, kritischen ...

Windows 10
RFID oder ähnlich Methode zur Sperrung W10pro bei Abwesenheit - Anmeldung nur über PW wieder ermöglichen
UweGriFrageWindows 1013 Kommentare

Hallo Admins, folgende Lösung wird gesucht: W10pro Anmeldung über Bitlocker Freischaltung und PW bei Anmeldung. Gesucht wird: RFID Chip ...

Windows Userverwaltung
Synology mit Azure Active Directory verbinden
roeggiFrageWindows Userverwaltung13 Kommentare

Ich suche eine Lösung mit der ich ein Synology NAS mit der Active Directory verbinden kann um die Benutzer ...

C und C++
(Cpp) Verständnisproblem: Nutzen des new-operators? (mit Beispiel)
gelöst SinixNDFrageC und C++12 Kommentare

Hallo liebe community! INTRO: Zunächsteinmal: Trotz mehrerer Stunden Recherche habe ich für meine Frage leider noch keine Antwort gefunden ...

Ähnliche Inhalte
Microsoft Office
VBA Textformatierung Kalenderwoche
gelöst Florian86FrageMicrosoft Office3 Kommentare

Hallo, ich habe folgende Formel im Excel =WENN(A10="";"";"40"+$G$6&TEXT(KALENDERWOCHE(($C$6);21);"00")&WOCHENTAG($C$6;2)) Beispielergebnis: 41071 diese möchte ich mit VBA in die Zelle schreiben. ...

VB for Applications

Word-VBA: Zwei "verknüpfte" ContentControl-Dropdownfelder

BaseBubbleFrageVB for Applications

Mal wieder ein Hallo in die Runde und mal wieder brauche ich Hilfe In einer Word-Datei sollen zwei Dropdown-Felder ...

Microsoft Office

Word-VBA Dateiauswahldialog aus vorgegebenem Ordner

gelöst BaseBubbleFrageMicrosoft Office3 Kommentare

Hallo in die Runde! Ich bastle gerade an einem kleinen Word-VBA-Projekt, in dem es nötig ist, eine Datei auszuwählen. ...

VB for Applications

VBA in Word 2010 bzw 2013(16)

gelöst ahstaxFrageVB for Applications11 Kommentare

Hallo, wir haben hier folgendes Word-Makro: Es wird bei der Abarbeitung eines Dokuments durch eine Bürosoftware ausgeführt (überprüft!). Anschließend ...

VB for Applications

VBA - Bereich von Excel nach Word kopieren

gelöst schwazza89FrageVB for Applications6 Kommentare

Hallo zusammen, ich suche eine Möglichkeit einen Bereich aus Excel in eine Tabelle in Word zu kopieren. Meinen ersten ...

VB for Applications

Word VBA - Bestimmte Ebene einer Nummerierung markieren

gelöst BaseBubbleFrageVB for Applications3 Kommentare

Hallo! In einer Word-Datei mit Nummerierungen möchte ich via VBA die zweite Ebene der Nummerierungen markieren (und dann weiterbearbeiten ...

Berechtigungs- und IdentitätsmanagementBerechtigungs- und IdentitätsmanagementWebdienste und -serverWebdienste und -serverDatenbankenDatenbankenMonitoring & SupportMonitoring & SupportHybrid CloudHybrid CloudSmall Business ITSmall Business IT