Tabelle beschreiben per VBA

Moderator: ModerationP

Tabelle beschreiben per VBA

Beitragvon mcdbpas » 24. Okt 2020, 16:39

Hallo Leute,

ich erstelle per Makro eine Tabelle in der Fußzeile. Diese wird dann noch formatiert.

Code: Alles auswählen

Sub Makro3()
'
' Makro3 Makro
'
'
'
' Tabelle Einfügen
'
'
    ActiveDocument.Tables.Add Range:=Selection.Range, NumRows:=2, NumColumns:= _
        4, DefaultTableBehavior:=wdWord9TableBehavior, AutoFitBehavior:= _
        wdAutoFitFixed
    With Selection.Tables(1)
        If .Style <> "Tabellenraster" Then
            .Style = "Tabellenraster"
        End If
        .ApplyStyleHeadingRows = True
        .ApplyStyleLastRow = False
        .ApplyStyleFirstColumn = True
        .ApplyStyleLastColumn = False
        .ApplyStyleRowBands = True
        .ApplyStyleColumnBands = False
    End With

'
' Tabelle formatieren
'
'
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=3.75, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-3.6, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-10.7, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-17.8, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-24.85, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-31.95, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Rows.SetLeftIndent LeftIndent:=-31.95, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=113.25, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=120.65, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=127.75, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=134.85, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=141.95, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=149, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=156.1, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=163.2, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=170.3, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=177.35, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=184.45, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=191.55, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=198.65, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=205.7, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=212.8, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=219.9, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=226.55, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(2).SetWidth ColumnWidth:=226.55, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(3).SetWidth ColumnWidth:=106.75, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(3).SetWidth ColumnWidth:=99.65, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(3).SetWidth ColumnWidth:=92.55, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(3).SetWidth ColumnWidth:=92.55, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(4).SetWidth ColumnWidth:=106.35, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(4).SetWidth ColumnWidth:=99.25, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(4).SetWidth ColumnWidth:=92.15, RulerStyle:= _
        wdAdjustNone
    Selection.Tables(1).Columns(4).SetWidth ColumnWidth:=92.15, RulerStyle:= _
        wdAdjustNone
End Sub


Ich habe versucht die Tabelle per Makro mit Inhalt zu füllen, leider ohne Erfolg. Die Tabelle wird gelöscht und dann der Inhalt einfach eingefügt.

Die erste Zeile soll nun folgendes Erhalten: Spalte1 = Dokumententitel | Spalte 2 = Dateiname | Spalte 3 = Text (Seiten) | Spalte 4 = Text (Versionierung)
Die zweite Zeile Spalte 1 = Text | Spalte 2 = Text | Spalte 3 = PAGE \* Arabic & Text (von) & NUMPAGES \* Arabic | Spalte 4 = Text (1.) & (DOCPROPERTY RevisionNumber) & Text (|) & DATE \@ ""dd/MM/yy

Wie kann ich einzelne Zellen beschreiben bzw. Funktionen einfügen?

Vielen Dank für die Hilfe.

VG mcdbpas
mcdbpas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 20. Jan 2006, 21:18

Re: Tabelle beschreiben per VBA

Beitragvon mcdbpas » 25. Okt 2020, 03:08

Hab's selbst herausgefunden:

Code: Alles auswählen
Selection.Tables(1).Rows(1).Cells(1).Select
With Selection
 .Collapse Direction:=wdCollapseStart
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="INFO  Title ", PreserveFormatting:=True
End With


Selection.Tables(1).Rows(1).Cells(2).Select
With Selection
 .Collapse Direction:=wdCollapseStart
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="INFO  FileName ", PreserveFormatting:=True
End With


Selection.Tables(1).Rows(1).Cells(3).Select
Selection.TypeText Text:="Seite"

Selection.Tables(1).Rows(1).Cells(4).Select
Selection.TypeText Text:="Version"


Selection.Tables(1).Rows(2).Cells(1).Select
Selection.TypeText Text:="Intern"


Selection.Tables(1).Rows(2).Cells(2).Select
With Selection
 .Collapse Direction:=wdCollapseStart
 .InsertSymbol CharacterNumber:=211, _
 Font:="Symbol", Unicode:=True
 .TypeText Text:=" 2020                    "
End With


Selection.Tables(1).Rows(2).Cells(3).Select
With Selection
 .Collapse Direction:=wdCollapseStart
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="PAGE  \* Arabic ", PreserveFormatting:=True
 .TypeText Text:=" von "
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="NUMPAGES  \* Arabic ", PreserveFormatting:=True
End With


Selection.Tables(1).Rows(2).Cells(4).Select
With Selection
 .Collapse Direction:=wdCollapseStart
 .TypeText Text:="1."
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="DOCPROPERTY  RevisionNumber ", PreserveFormatting:=True
 .TypeText Text:=" | "
 .Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, Text:="DATE  \@ ""dd/MM/yy"" ", PreserveFormatting:=True
End With
   
mcdbpas
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 14
Registriert: 20. Jan 2006, 21:18

Re: Tabelle beschreiben per VBA

Beitragvon knobbi38 » 25. Okt 2020, 13:10

Hallo mcdbpas ,

man könnte auch direkt in eine Zelle einer Tabelle schreiben, ohne Umweg über das Selektion-Objekt:
Code: Alles auswählen
  With ActiveDocument.Tables(1)
    .Cell(1, 1).Range.Text = "Zelle1"
    .Cell(2, 2).Range.Text = "Zeile2, Spalte 2"
  End With

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


Zurück zu Word Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast