MS-Word Makro – Tabellenbreite automatisch anpassen

Am 09.07.09 kam mein Chef zu mir und hat gefragt ob ich ein Microsoft Word Makro entwickeln könnte, womit man die Breite einiger Tabellenspalten vereinheitlichen kann. Es ging um ein Dokument mit etwas mehr als 130 Tabellen, daher währe das Einstellen von Hand sehr umständlich.

Jede Tabelle hatte die selbe Struktur und daher sollte jede Tabelle genau gleich breit sein, also auch jede Spalte der Tabelle genau so breit wie die jeweils gleiche Spalte einer anderen Tabelle.

Wie lege ich ein Makro an?

Ich arbeite mit Word 2007, also dem neuen Teil der Serie, dort gelangt man über den Reiter ‘Ansicht->Makros’ zu den gegebenen Funktionen. Da ich aber mit Tastenkürzeln schneller bin verwende ich ‘[ALT]+[F8]’, dann gebe ich den Namen des neuen Makros ein, in meinem Fall also “formatiereTabelle.renderTable” und klicke auf “Erstellen” oder ‘[ALT]+[E]’, schon kanns losgehen.

In welcher Programmiersprache sind die Makros?

Die Makros werden in VBA – VisualBasic for Applications programmiert, man kann also viele Funktionen von VisualBasic verwenden.

Und wie bearbeite ich die Tabellen?

Um überhaupt arbeiten zu können braucht man alle im Dokument enthaltenen Tabellen, in meinem Fall reichte es, einfach alle durchzugehen und alle zu bearbeiten. Hierzu habe ich mir die ‘for each’ Schleife zur Hilfe herangezogen.

Dim table As Word.table
For Each table In ActiveDocument.Tables
‘hier wird gearbeitet
Next

Somit werden alle Tabellen nacheinander durchgegangen, die aktuelle Tabelle wird in ‘table’ gespeichert.

Als nächstes müssen wir für jede Spalte jeder Zeile auf eine feste Breite bringen, dies realisieren wir auch mit einer ‘for each’ Schleife:

For Each i In table.Rows
‘hier kann was gemacht werden
Next

Somit können wir jede Zeile der aktuellen Tabelle bearbeiten.

Ich hatte feste Tabellenstrukturen mit 3 Spalten pro Tabelle, meine Makrofunktion sah wie folgt aus:

Function mySub()
Dim table As Word.table
Dim actRow As Row

For Each table In ActiveDocument.Tables
For Each actRow In table.Rows
actRow.Cells(1).Width = 80
actRow.Cells(2).Width = 400
actRow.Cells(3).Width = 180
Next
Next
End Function

Dieser Abschnitt durchläuft jede Zeile

For Each actRow in table.Rows

jeder Tabelle des aktuellen Dokumentes

For Each table in ActiveDocument.Tables

und setzt die erste Spalte auf eine Breite von 80, die zweite auf eine Breite von 400 und die dritte auf eine Breite von 180. Welche Einheit das ist weiß ich nicht.

Die Seite war in meinem Fall auf Querformat eingestellt.

Dieser Beitrag wurde unter Office abgelegt und mit , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Eine Antwort auf MS-Word Makro – Tabellenbreite automatisch anpassen

  1. Pingback: MS-Word Makro: Entfernen aller Hyperlinks im aktiven Dokument @ Oliver Lippert

Hinterlasse eine Antwort

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

*

Du kannst folgende HTML-Tags benutzen: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>