goofy57
Goto Top

Word mit VBA formatieren

Hallo,
folgende Aufgabe:
Als Template liegt ein Word Dokument mit einer 1x2 Tabelle vor. Diese Tabelle soll mit Adressen gefüllt werden. Die 2te Spalte bleibt leer. Nach jedem Eintrag ist die Tabelle um eine weitere Zeile zu erweitern.
Die Daten liegen in einer Access Datenbank.
Die Ausgabe klappt einwandfrei.

Nun soll aber zusätzlich eine Formatierung erfolgen.

Beispiel:
Name - fett
Adresse - normal
PLZ und Ort - normal

Nach stundenlanger, erfolgloser Recherche im Netz wendig ich mich nun an euch.
Hat jemand eine Idee wie das Problem zu lösen ist?

Viele Grüße

Content-ID: 671570

Url: https://administrator.de/forum/word-mit-vba-formatieren-671570.html

Ausgedruckt am: 23.02.2025 um 13:02 Uhr

mediodia
mediodia 23.02.2025 aktualisiert um 13:28:18 Uhr
Goto Top
Auf die Idee einfach mal den Makro Recorder zu benutzen bist du nicht gekommen?

Aus dem Gedächtnis geschrieben etwa so um in der ersten Spalte der ersten Tabelle im Dokument jeweils den ersten Absatz fett zu formatieren:
Sub FormatFirstColumnBold()
    dim c as cell
    for each c in ActiveDocument.Tables(1).Columns(1).Cells
        c.Range.Paragraphs(1).Bold = True
    Next
End Sub
Wie immer ist auch die Referenz von Word dein Freund für solche Aufgaben, dann muss man sich auch nicht dumm und dämlich suchen sondern liest es, macht es und lernt dabei auch noch was 😎
https://learn.microsoft.com/en-us/office/vba/api/overview/word

Gruß m.
DivideByZero
DivideByZero 23.02.2025 um 11:36:18 Uhr
Goto Top
Alternativ hätte da auch eine KI die ersten Ansätze liefern können.
DivideByZero
DivideByZero 23.02.2025 aktualisiert um 12:56:01 Uhr
Goto Top
In ChatGPT sieht das dann so aus:


Im Folgenden ein Beispiel, wie Du per VBA die bereits vorhandenen Adressdaten in der ersten Spalte einer Word-Tabelle formatieren kannst. Dabei gehen wir davon aus, dass in jeder Zelle drei Absätze stehen:

Erster Absatz: Name (fett)
Zweiter Absatz: Adresse (normal)
Dritter Absatz: PLZ und Ort (normal)

Der Code iteriert durch alle Zeilen der Tabelle und passt in der ersten Zelle jeweils die Formatierung der drei Absätze an:

Sub FormatAdressen()
    Dim tbl As Table
    Dim rw As Row
    
    ' Die erste Tabelle im aktiven Dokument auswählen  
    Set tbl = ActiveDocument.Tables(1)
    
    ' Jede Zeile der Tabelle durchlaufen  
    For Each rw In tbl.Rows
        With rw.Cells(1).Range
            ' Entferne das letzte Zeichen (Zellmarkierung), damit diese nicht formatiert wird  
            .End = .End - 1
            
            ' Sicherstellen, dass mindestens 3 Absätze vorhanden sind  
            If .Paragraphs.Count >= 3 Then
                ' Ersten Absatz (Name) fett formatieren  
                .Paragraphs(1).Range.Font.Bold = True
                ' Zweiten Absatz (Adresse) normal formatieren  
                .Paragraphs(2).Range.Font.Bold = False
                ' Dritten Absatz (PLZ und Ort) normal formatieren  
                .Paragraphs(3).Range.Font.Bold = False
            End If
        End With
    Next rw
    
    MsgBox "Formatierung abgeschlossen!", vbInformation  
End Sub
Erklärung zum Code:

Tabelle auswählen:
Mit ActiveDocument.Tables(1) wird die erste Tabelle im Dokument referenziert.

Zellbereich anpassen:
Die .End = .End - 1-Anweisung entfernt das abschließende Zellmarkierungszeichen, sodass nur der tatsächliche Text (und seine Absätze) formatiert wird.

Formatierung:
Es wird geprüft, ob in der Zelle mindestens drei Absätze vorhanden sind. Falls ja, wird der erste Absatz (Name) fett gesetzt und die folgenden (Adresse sowie PLZ und Ort) auf Normal gesetzt.

Du kannst diesen Makro in Deinem Word-Dokument im VBA-Editor einfügen und ausführen, um die Formatierung der Adressdaten anzupassen.

Das ist natürlich nur ein Grobgerüst und anzupassen, zeigt aber, dass neben der Google-Suche (die übrigens auch etliche Treffer findet) die KI bei so kleinen Makro-Anfragen ein sehr guter Einstieg ist, weil sie in die richtige Richtung weist und gleich eine Erläuterung dazu gibt. Um Halluzinationen auszuschließen, ist es aber natürlich immer gut, wenn man auch versteht, was die KI da so macht.