Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1624to1628
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Die Anzahl der Spalten einer Wordtabelle auslesen

Die Anzahl der Spalten einer Wordtabelle auslesen
24.05.2018 08:16:49
Frank
Moin Cracks,
Wie kann ich in einer Wordtabelle die Anzahl der Spalten ermitteln? Notwendig ist das erst ab der dritten Zeile.
Die Aufgabe wenn ich die Anzahl der Spalten weiß:
Steht in der letzten Spalte eine Zahl (1) dann Addiere den Wert der Spalte davor zu einer Variable (1)
Kann da jemand helfen?
Gruß
Frank

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Die Anzahl der Spalten einer Wordtabelle auslesen
24.05.2018 08:23:00
Frank
Also über VBA von Excel aus ;-)
AW: Die Anzahl der Spalten einer Wordtabelle auslesen
24.05.2018 10:53:54
Robert
Hallo Frank,
nachstehendes Makro ermittelt die Anzahl der Spalten in Zeile 3 der ersten Tabelle in dem Worddokument sowie den Inhalt der letzten und vorletzten Spalte dieser Zeile.
Sub WordTabelle()
Dim wdApp As Word.Application
Dim wdDoc As Word.Document
Dim strDatei As String, lSp As Integer, rngW As Word.Range, strLZ As String, strVLZ As String
strDatei = ThisWorkbook.Path & "\Test.docx"
Set wdApp = New Word.Application
wdApp.Visible = True
Set wdDoc = wdApp.Documents.Open(strDatei)
'Anzahl Spalten in Zeile 3 ermitteln
lSp = wdDoc.Tables(1).Rows(3).Cells.Count
'Inhalt der letzten Zelle in Zeile 3
Set rngW = wdDoc.Tables(1).Cell(3, lSp).Range
rngW.MoveEnd Unit:=wdCharacter, Count:=-1
strLZ = rngW
'Inhalt der vorletzten Zelle in Zeile 3
Set rngW = wdDoc.Tables(1).Cell(3, lSp - 1).Range
rngW.MoveEnd Unit:=wdCharacter, Count:=-1
strVLZ = rngW
MsgBox "Die  3. Zeile der ersten Tabelle im Word-Dokument hat " & lSp & " Spalten." & vbCrLf _
& "Die letzte Zelle der 3. Zeile hat den Inhalt " & strLZ & vbCrLf _
& "Die vorletzte Zelle der 3. Zeile hat den Inhalt " & strVLZ
wdDoc.Close
wdApp.Quit
Set rngW = Nothing
Set wdDoc = Nothing
Set wdApp = Nothing
End Sub

Ein Verweis auf die jeweilige "Microsoft Word xx Object Library" muss gesetzt werden.
Gruß
Robert
Anzeige
AW: Die Anzahl der Spalten einer Wordtabelle auslesen
24.05.2018 12:53:16
Frank
Hallo Robert,
danke, das werde ich morgen mal probieren.
Das hat inzwischen auch auf einem anderen Weg geklappt :-) (siehe unten)
Dabei bin ich auf das Problem gestoßen dass die Word-Sonderzeichen (Absatzende, Umbruch, ...) immer beim Auslesen des Zellwertes mit übergeben werden.
So ist dann nicht nur die Zahl sondern noch etwas unlesbares dabei.
Ich habe mir den Zahlenwert mit left(xxx,1) gefiltert.
Gibt es da eine besser Lösung?
Mein Code:
    Set wrdtb = wrd.ActiveDocument.tables(aktuelleTabelle)
On Error Resume Next
For Each Row In wrdtb.Rows
If Row.Index >= 4 Then
If Row.Cells.Count = 3 Then
If Left(Row.Cells(3).Range.Text, 1) = 1 Then TX1 = TX1 + Left(Row.Cells(2). _
Range.Text, 1)
If Left(Row.Cells(3).Range.Text, 1) = 2 Then TX2 = TX2 + Left(Row.Cells(2). _
Range.Text, 1)
If Left(Row.Cells(3).Range.Text, 1) = 3 Then TX3 = TX3 + Left(Row.Cells(2). _
Range.Text, 1)
If Left(Row.Cells(3).Range.Text, 1) = 4 Then TX4 = TX4 + Left(Row.Cells(2). _
Range.Text, 1)
ElseIf Row.Cells.Count = 4 Then
If Left(Row.Cells(4).Range.Text, 1) = 1 Then TX1 = TX1 + Left(Row.Cells(3). _
Range.Text, 1)
If Left(Row.Cells(4).Range.Text, 1) = 2 Then TX2 = TX2 + Left(Row.Cells(3). _
Range.Text, 1)
If Left(Row.Cells(4).Range.Text, 1) = 3 Then TX3 = TX3 + Left(Row.Cells(3). _
Range.Text, 1)
If Left(Row.Cells(4).Range.Text, 1) = 4 Then TX4 = TX4 + Left(Row.Cells(3). _
Range.Text, 1)
End If
End If
Next Row

Anzeige
AW: Die Anzahl der Spalten einer Wordtabelle auslesen
24.05.2018 13:40:45
Robert
Hallo Frank,
das hatte ich auch festgestellt. Ich habe das durch die Zeile
rngW.MoveEnd Unit:=wdCharacter, Count:=-1

behoben. Dadurch wird der Bereich um 1 Zeichen verkürzt.
Mit Left zu arbeiten ist auch eine Möglichkeit. Voraussetzung ist dabei aber, dass in den Zellen auch nur einstellige Zahlen drin stehen. Sonst erhälst Du bei 2-stelligen Zahlen falsche Ergebnisse. Die Fehlermeldung bei Text unterdrückst Du ja mit der OnError-Anweisung.
Gruß
Robert

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige