Auf Unterzeilen in einer Tabelle zugreifen

  • Word

SSL ist deaktiviert! Aktivieren Sie SSL für diese Sitzung, um eine sichere Verbindung herzustellen.

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von peterfido.

    Auf Unterzeilen in einer Tabelle zugreifen

    Hallo Leute,

    Ich habe Probleme mit dem Zugriff auf einzelne Zeller in einer Tabelle innerhalb eines Word Dokumentes. Wenn die Tabellen gleichmäßig aufgebaut sind, habe ich damit auch keine Probleme jedoch sind hier jeweils ab der 3. Zeilen nochmals unterschiedlich viele "Unterzeilen". Wie kann ich auf diese Zellen zugreifen?

    VB.NET-Quellcode

    1. ​For currentRow As Integer = 1 To oDoc.Tables(i).Rows.Count
    2. For currentColumn As Integer = 1 To oDoc.Tables(i).Columns.Count
    3. oDoc.Tables(i).Cell(currentRow, currentColumn).Range.Text = "Test"


    Mit diesem Code wird eine Exception geworfen sobald er versucht in die Zeile "2,1" zu springen da er nur "1,3", "1,4" und "1,5" abarbeitet und anschließend direkt in "2,1" springen will (siehe Bild).
    Es wäre super wenn jemand dafür eine Lösung hätte, Danke!

    Gruß

    Hallo,

    da gibt es Lücken, wenn man solche Tabellen nutzt. Word meckert dann den Fehler 5991 an.
    Folgendes habe ich eben erstellt und "spielt" bissel mit der Tabelle und listet soweit alles, was vorhanden ist, im Direktfenster auf.
    Evtl. ist da was Nützliches für Dich (und andere) bei.

    Fehler habe ich noch keine abgefangen.

    Visual Basic-Quellcode

    1. Option Explicit
    2. Private Type ZellenKoordinaten
    3. istZelle As Long
    4. Zeile As Long
    5. Spalte As Long
    6. End Type
    7. Private Sub Test()
    8. Dim Anzahl As Long
    9. Dim Adressen As ZellenKoordinaten
    10. AlleZellenListen
    11. Do
    12. Anzahl = Anzahl + 1
    13. Adressen = ZellenAdresse(1, Anzahl)
    14. If Adressen.istZelle > 0 Then
    15. Debug.Print "Zelle " & Anzahl & ":" & Adressen.Zeile & "," & Adressen.Spalte
    16. Else
    17. Exit Do
    18. End If
    19. Loop
    20. End Sub
    21. Private Sub AlleZellenListen()
    22. Dim Tabelle As Table
    23. Dim Zelle As Cell
    24. Dim Zeile As Row, Spalte As Column
    25. Dim ZellNr As Long, TabellNr As Long
    26. For Each Tabelle In ThisDocument.Tables
    27. TabellNr = TabellNr + 1
    28. Set Zelle = Tabelle.Cell(1, 1)
    29. Do
    30. ZellNr = ZellNr + 1
    31. Debug.Print TabellNr & "-" & ZellNr & ":" & Zelle.RowIndex & "," & Zelle.ColumnIndex
    32. If Zelle.Next Is Nothing Then
    33. Exit Do
    34. End If
    35. Set Zelle = Zelle.Next
    36. Loop
    37. Next
    38. End Sub
    39. Private Function istZelle(ByVal lTabelle As Long, ByVal lZeile As Long, ByVal lSpalte As Long) As Long
    40. Dim Tabelle As Table
    41. Dim Zelle As Cell
    42. Dim ZellNr As Long, TabellNr As Long
    43. istZelle = 0
    44. For Each Tabelle In ThisDocument.Tables
    45. TabellNr = TabellNr + 1
    46. If TabellNr = lTabelle Then
    47. Set Zelle = Tabelle.Cell(1, 1)
    48. Do
    49. ZellNr = ZellNr + 1
    50. If Zelle.RowIndex = lZeile And Zelle.ColumnIndex = lSpalte Then
    51. istZelle = ZellNr
    52. Exit Do
    53. End If
    54. If Zelle.Next Is Nothing Then
    55. Exit Do
    56. End If
    57. Set Zelle = Zelle.Next
    58. Loop
    59. End If
    60. Next
    61. End Function
    62. Private Function ZellenAdresse(ByVal lTabelle As Long, ByVal lZelle As Long) As ZellenKoordinaten
    63. Dim Tabelle As Table
    64. Dim Zelle As Cell
    65. Dim Zeile As Row, Spalte As Column
    66. Dim ZellNr As Long, TabellNr As Long
    67. ZellenAdresse.istZelle = 0
    68. For Each Tabelle In ThisDocument.Tables
    69. TabellNr = TabellNr + 1
    70. If TabellNr = lTabelle Then
    71. Set Zelle = Tabelle.Cell(1, 1)
    72. Do
    73. ZellNr = ZellNr + 1
    74. If lZelle = ZellNr Then
    75. With ZellenAdresse
    76. .istZelle = ZellNr
    77. .Zeile = Zelle.RowIndex
    78. .Spalte = Zelle.ColumnIndex
    79. End With
    80. Exit Do
    81. End If
    82. If Zelle.Next Is Nothing Then
    83. Exit Do
    84. End If
    85. Set Zelle = Zelle.Next
    86. Loop
    87. End If
    88. Next
    89. End Function
    Gruß
    Peterfido

    Keine Unterstützung per PN!
    Hi,

    Danke für deine Antwort. Kannst du mal bitte deine Import-Anweisungen posten? Visual Studio findet bei mit die Typen Cell, Row und Column nicht. Und bei den Set-Anweisungen steht "Let- und Set-Zuweisungsansweisungen werde nicht mehr unterstützt".

    Gruß

    -Edit

    Ich habs hinbekommen. Dein Programm funktioniert. Ich schaue jetzt mal ob ich es damit hinbekommen. Viel Dank schonmal!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lacroix“ ()

    Hallo,

    der Code steht bei mir direkt im Word-Dokument und nicht in einem Modul oder gar Visual Studio. Ansonsten nutze ich Office 2016 und habe nichts weiter verstellt.
    Gruß
    Peterfido

    Keine Unterstützung per PN!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „peterfido“ ()