Word '13 - Zelleninhalt der Tabelle beginnt mit vbCr anstatt definiertem Text

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Dancger.

    Word '13 - Zelleninhalt der Tabelle beginnt mit vbCr anstatt definiertem Text

    Hallo zusammen

    Mein generiertes Word Dokument enthält eine Kopfzeile mit einer Tabelle.
    Schreibe ich Text in eine dieser Zeilen (mit .Cell(4, 3).Range.Text = "lala test"), wird der Text korrekt angezeigt.
    Versuche ich allerdings, Text mit Paragraphen einzufügen (.Cell(3, 1).Range.Paragraphs.Add 'u.s.w.), ist immer ein vbCr vorangestellt.

    Ein Bild sagt mehr als 1000 Worte:


    Codeausschnitt:

    VB.NET-Quellcode

    1. Const FONT_NAME As String = "Arial"
    2. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    3. Dim oWord As Word.Application
    4. Dim oDoc As Word.Document
    5. 'Word starten und Dokument Template laden
    6. oWord = CreateObject("Word.Application")
    7. oWord.Visible = True
    8. oDoc = oWord.Documents.Add
    9. 'Kopfzeile hinzufügen
    10. Dim range_header As Word.Range = oDoc.Sections(1).Headers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range
    11. Dim table_header As Word.Table = range_header.Tables.Add(Range:=range_header, NumRows:=4, NumColumns:=3)
    12. With table_header
    13. 'Schrift Einstellungen
    14. .Range.Font.Name = FONT_NAME
    15. .Range.Font.Size = 12
    16. .Range.Font.Bold = False
    17. 'Zellen verbinden
    18. .Cell(1, 1).Merge(.Cell(2, 1))
    19. 'Logo
    20. Dim pth_image As String = "E:\Pictures\4d9df0e6985ab9e9218f3874ccf9649d.gif"
    21. .Cell(1, 1).Range.InlineShapes.AddPicture(pth_image)
    22. 'Inhalt
    23. Dim para_header_address As Word.Paragraph = .Cell(3, 1).Range.Paragraphs.Add
    24. With para_header_address
    25. .Range.Text = "Erste Zeile"
    26. .Range.Font.Bold = False
    27. .Range.Font.Name = FONT_NAME
    28. .Range.Font.Size = 12
    29. .Format.SpaceAfter = 12
    30. .Format.SpaceBefore = 0
    31. End With
    32. Dim para_header_info As Word.Paragraph = .Cell(3, 1).Range.Paragraphs.Add
    33. With para_header_info
    34. .Range.Text = "Zweite Zeile"
    35. .Range.Font.Bold = False
    36. .Range.Font.Name = FONT_NAME
    37. .Range.Font.Size = 12
    38. .Format.SpaceAfter = 0
    39. End With
    40. Dim para_header_nr As Word.Paragraph = .Cell(3, 1).Range.Paragraphs.Add
    41. With para_header_nr
    42. .Range.Text = "Dritte Zeile"
    43. .Range.Font.Bold = False
    44. .Range.Font.Name = FONT_NAME
    45. .Range.Font.Size = 9
    46. End With


    Wie kriege ich den ersten vbCr am "saubersten" weg? Gibts da ne schöne Einstellung beim hinzufügen des ersten Paragraphen?

    Gruss
    Dancger
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „Dancger“ ()

    Dancger schrieb:

    Versuche ich allerdings, Text mit Paragraphen einzufügen (.Cell(3, 1).Range.Paragraphs.Add 'u.s.w.), ist immer ein vbCr vorangestellt.
    Was erwartest du?
    Ein Paragraph ist ein harter Zeilenumbruch.
    Wenn du den einfügst, dann gibt es natürlich eine neue Zeile.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    petaod schrieb:

    Ein Paragraph ist ein harter Zeilenumbruch.
    Das ist mir bewusst, trotzdem muss der erste Absatz irgendwie unterdrückt werden.

    Das Ziel sind drei Zeilen in der Zelle. Die erste und zweite Zeile in Schriftgrösse 12, die letzte in Schriftgrösse 9. Zwischen der ersten und zweiten Zeile muss eine Leerzeile resp. ein Absatz sein:
    Spoiler anzeigen
    Zeile 1

    Zeile 2
    Zeile 3


    Ist es möglich, dies ohne Paragraphen zu erreichen?
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...
    Hast Recht, hab schon viel zuweit gedacht.
    Ich kann den Text definieren und dann nur die zweite und dritte Zeile als Paragraph hinzufügen, dann klappts:

    VB.NET-Quellcode

    1. 'Zeile 30 bis 38 ersetzen:
    2. With .Cell(3, 1).Range.Font
    3. .Bold = False
    4. .Name = FONT_NAME
    5. .Size = 12
    6. End With
    7. .Cell(3, 1).Range.Text = "Erste Zeile"


    Edit: Hab per Zufall noch ne weitere Variante gefunden. Einfach beim hinzufügen des Paragraphen die Range der Zelle übergeben:

    VB.NET-Quellcode

    1. 'Zeile 30 ersetzen:
    2. Dim para_header_address As Word.Paragraph = .Cell(3, 1).Range.Paragraphs.Add(.Cell(3, 1).Range)


    Danke dir für den Lösungsansatz.
    MESS WITH THE BEST, DIE LIKE THE REST! :evil:
    n'paar Links: DNS Tools, Steal WA DB, Droidsheep...