none
4-Spaltige Wordtabelle Spaltenbreiten fest definieren RRS feed

  • Frage

  • Hallo Leute,

    ich habe folgendes Problem:

    Ich möchte in einem Worddokument eine Tabelle mit 4 Spalten einfügen. Dabei soll gegeben sein,

    - Tabelle über gesamte Breite
    - Spalten 1+3 feste Breite auf 3 cm
    - Spalten 2+4 gleichmäßig auf den Rest verteilen

    Aber egal wie ich es mache, immer wieder verschieben sich die Spalten.

    oTable = .Tables(1).Tables.Add(.Bookmarks.Item("\endofdoc").Range, 3, 4)
    With oTable
      .PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent
      .PreferredWidth = 100
      .Columns(1).PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPoints
      .Columns(1).PreferredWidth = myWord.WdApp.Application.CentimetersToPoints(3)
      .Columns(3).PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPoints
      .Columns(3).PreferredWidth = myWord.WdApp.Application.CentimetersToPoints(3)
    End With

    Wie bekomme ich das hin?

    Vielen Dank im Voraus.

    Gruß Ahmed


    • Verschoben Stefan FalzModerator Samstag, 5. Januar 2019 16:13 Eher eine Frage für Office Entwickler
    Samstag, 5. Januar 2019 14:42

Antworten

  • Hallo Leute,

    so ich habe es doch noch hinbekommen:

    .PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent
    .PreferredWidth = 100
    
    For i As Integer = 1 To .Columns.Count
        w += .Columns(i).Width
    Next
    .Columns(1).SetWidth(myWord.WdApp.Application.CentimetersToPoints(3), WdRulerStyle.wdAdjustNone)
    .Columns(2).SetWidth(w - .Columns(1).Width, WdRulerStyle.wdAdjustNone)

    Erst stelle ich die Tabellenbreite auf gesamte Seitenbreite ein (100%)
    Anschließend ermittle ich einfach die Summe der Spaltenbreiten (w=Tabellenbreite in Points).

    Von hier aus referenziere ich einfach meine Spalten mit der festen Breite mit .SetWidth =

    Anschließend subtrahiere ich von der Tabellenbreite einfach immer die bereits vergebenen Spaltenbreiten ab und verteile diese auf die verbleibenden nach belieben.

    In meinem Fall bei einer 4-Spaltigen Tabelle, wobei die Spalten 1+3 fest sein sollen, sieht das ganze dann so aus:

    With oTable
      .PreferredWidthType = WdPreferredWidthType.wdPreferredWidthPercent
      .PreferredWidth = 100
      .Columns(1).SetWidth(myWord.WdApp.Application.CentimetersToPoints(3), WdRulerStyle.wdAdjustNone)
      .Columns(3).SetWidth(myWord.WdApp.Application.CentimetersToPoints(3), WdRulerStyle.wdAdjustNone)
      .Columns(2).SetWidth((w - .Columns(1).Width - .Columns(3).Width) \ 2, WdRulerStyle.wdAdjustNone)
      .Columns(4).SetWidth(.Columns(2).Width, WdRulerStyle.wdAdjustNone)
    End With

    Mein Problem ist damit gelöst.

    Gruß Ahmed

    Samstag, 5. Januar 2019 16:25