Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Moderator: ModerationP

Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon Maxi-Air » 02. Aug 2019, 13:29

Hallo zusammen,

ich habe bereits Google bemüht und auch explizit das Forum durchsucht, leider bin ich nicht fündig geworden und die alten Threads, die in etwa die Frage aufwarfen, wiesen keine Antwort auf. Hoffentlich habe ich jetzt keins übersehen.

Ich habe (in Word 2016 auf Win10) dutzende Seiten mit Tabellen, die aber alle einen schwarzen Rahmen haben. Jetzt suche ich nach einer Möglichkeit, für alle Tabellen die Rahmenfarbe gemeinsam zu ändern, oder zumindest pro Tabelle, denn momentan finde ich keine Alternative, außer jede Linie einzeln "nachzuziehen".

Vielen Dank und viele Grüße,
Max
Maxi-Air
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 02. Aug 2019, 13:23

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon theoS » 02. Aug 2019, 18:57

Haben die Tabellen verbundene Zellen?
Mach mal ein Muster deiner typischen Tabelle und lad das hoch

Edit:
Wenn das einfache Tabellen sind, dann kannst du das vielleicht mit dem Schnipsel erledigen. Ändert die inneren und äußeren Ränder gleichzeitig.
Code: Alles auswählen
Sub tabGug()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim ta1 As Table, c As Long, i As Long

c = dd1.Tables.Count

For i = 1 To c
 Set ta1 = dd1.Tables(i)

 ta1.Borders.InsideColorIndex = wdBrightGreen
 ta1.Borders.OutsideColorIndex = wdBrightGreen

Next i

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4738
Registriert: 19. Apr 2008, 00:14

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon Maxi-Air » 05. Aug 2019, 09:49

theoS hat geschrieben:Haben die Tabellen verbundene Zellen?
Mach mal ein Muster deiner typischen Tabelle und lad das hoch

Edit:
Wenn das einfache Tabellen sind, dann kannst du das vielleicht mit dem Schnipsel erledigen. Ändert die inneren und äußeren Ränder gleichzeitig.
Code: Alles auswählen
Sub tabGug()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim ta1 As Table, c As Long, i As Long

c = dd1.Tables.Count

For i = 1 To c
 Set ta1 = dd1.Tables(i)

 ta1.Borders.InsideColorIndex = wdBrightGreen
 ta1.Borders.OutsideColorIndex = wdBrightGreen

Next i

End Sub


Vielen Dank schonmal für die Antwort! Dazu noch eine Verständnisfrage, deinen Code würde ich als Makro ausführen, richtig? Dann müsste ich mich da nochmal einlesen.

Tatsächlich sind einige verbundene Zellen dabei. Die Tabellen sehen mehr oder weniger, wie folgend aus:

Bild
Maxi-Air
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 02. Aug 2019, 13:23

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon theoS » 05. Aug 2019, 12:34

Du könntest als Makrofreie Lösung auch mal versuchen in dem Entwurfsreiter der Tabelle die Vorlage auszuwechseln.
Ggf. Die so anpassen wie du brauchst. Normal basieren die Tabellen ja auf einer Standard Vorlage
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4738
Registriert: 19. Apr 2008, 00:14

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon Maxi-Air » 05. Aug 2019, 14:39

theoS hat geschrieben:Du könntest als Makrofreie Lösung auch mal versuchen in dem Entwurfsreiter der Tabelle die Vorlage auszuwechseln.
Ggf. Die so anpassen wie du brauchst. Normal basieren die Tabellen ja auf einer Standard Vorlage


Ok, das hab ich jetzt ausführlich versucht, komme da aber aufgrund der inkonsistenten Formatierung nicht weiter. Gerade weil manche Zeilen zb grau unterlegt sind und derartiges bleibt ja nach Anwenden der Vorlage nicht vorhanden. Auch kann ich so nicht verhindern, dass alle "inneren" Linien gezogen werden.
Maxi-Air
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 02. Aug 2019, 13:23

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon theoS » 05. Aug 2019, 16:10

Das wird ein wenig komplexer.
Bei verbundenen Zellen kann man mit VBA auch nicht in jede Zelle einzelnen hüpfen und dort die Farbe ändern. Zumindest nicht so einfach. Ich überlege mir nochmal was.
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4738
Registriert: 19. Apr 2008, 00:14

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon theoS » 05. Aug 2019, 19:40

Das könnte dann so gehen:
Du rufst mit Alt+F11 den Makroeditor auf, klickst auf "Normal" (linke Seite des Editors) mit der REchten Maustaste und fügst ein Modul ein.
In den Bereich rechts dann fügst du den Code den du hier von Sub... bis End Sub kopierst, ein. Oben in der Symbolleiste findest du eine "Play-Taste", die drückst du dann, wenn du dein Test-Dok mit einer der Tabellen drin in den Vordergrund geholt hast.

Code: Alles auswählen
Sub tabGug()
Dim dd1 As Document: Set dd1 = ActiveDocument
Dim ta1 As Table, c As Long, i As Long, cE As Cell, o As Long, onk As Border

c = dd1.Tables.Count

 For i = 1 To c
  Set ta1 = dd1.Tables(i)

   ta1.Select
   o = Selection.Cells.Count
    For x = 1 To o

     Set cE = ta1.Range.Cells(x)
      For Each onk In cE.Borders
        If onk.LineStyle <> wdLineStyleNone Then
          onk.ColorIndex = wdBrightGreen
        End If

      Next onk

    Next x

  Next i

End Sub
theo s.
Benutzeravatar
theoS
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4738
Registriert: 19. Apr 2008, 00:14

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon knobbi38 » 06. Aug 2019, 00:47

Hallo,
in Anlehnung an die Lösung von Theo.
Vielleicht reicht es auch schon, nur die Rahmen einzeln anzusprechen, anstatt jede einzelne Zelle:
Code: Alles auswählen
Sub SetBordersColorToAllTables(ByVal NewColor As WdColor)
  Static aBorderType() As WdBorderType
  Dim doc As Document
  Dim tbl As Table
  Dim i As Long
 
  ' Initialize the array only once with the border types to be changed.
  If (Not aBorderType) = -1 Then
    ReDim aBorderType(5)
    aBorderType(0) = wdBorderTop
    aBorderType(1) = wdBorderLeft
    aBorderType(2) = wdBorderRight
    aBorderType(3) = wdBorderBottom
    aBorderType(4) = wdBorderHorizontal
    aBorderType(5) = wdBorderVertical
  End If
 
  Application.ScreenUpdating = False
 
  Set doc = ActiveDocument
 
  For Each tbl In doc.Tables
    For i = 0 To UBound(aBorderType)
      tbl.Borders(aBorderType(i)).Color = NewColor
    Next
  Next

  Application.ScreenUpdating = True
End Sub
Der Aufruf erfolgt dann z.B. mit SetBordersColorsToAllTables wdColorRed.

Ulrich
knobbi38
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 1327
Registriert: 02. Jul 2015, 14:23

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon Gast » 06. Aug 2019, 12:08

Vielen Dank für eure ausführlichen Mühen. Zwischendurch hatte ich Bedenken, ob es klappt, da sich mein Word beim Ausführen des Makros für jeweils gut 10 Min verabschiedet (aufgehangen) hat. Final hat es aber funktioniert.

Die Zeile

onk.ColorIndex = wdBrightGreen

hab ich dafür durch

onk.Color = RGB(10, 20, 100)

ersetzt.

Den Code von Ulrich hab noch nicht ausprobiert, der erste hat schon funktioniert.

Vielen Dank nochmal euch beiden für die Super Hilfe! auch das Einfügen und aufrufen des Makros war so sehr entspannt und ich musste nicht danach noch ausführlich suchen.
Gast
 

Re: Alle Tabellenrahmen gleichzeitig ändern (Farbe)

Beitragvon Maxi-Air » 06. Aug 2019, 12:09

Man sollte sich zum Beitrag schreiben vielleicht anmelden! :oops:
Maxi-Air
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4
Registriert: 02. Aug 2019, 13:23


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste