AW: aus Excel Tabellen in Word erstellen
05.05.2023 13:28:18
krug96
Hallo Jochen,
ich habe mir auch mal den Vorschlag von Dir - eine fertige Tabelle in der Vorlage zu haben - an geschaut und versucht umzusetzen.
Das kopieren klappt, jedoch das befüllen dann nicht mehr. Da kommt an dieser Stelle "With wrdApp.ActiveDocument.Tables(AnzTb)" eine Fehlermeldung.
' 'Tabelle erzeugen
' If wrdApp.ActiveDocument.Bookmarks.Exists("TabelleEinfuegen") Then
' With wrdApp
' .Selection.GoTo What:=wdGoToBookmark, Name:="TabelleEinfuegen"
' .ActiveDocument.Tables.Add Range:=wrdApp.Selection.Range, _
' NumRows:=10, NumColumns:=4, _
' DefaultTableBehavior:=wdWord9TableBehavior, _
' AutoFitBehavior:=wdAutoFitFixed
' .Selection.HomeKey Unit:=wdStory
' .Selection.Delete Unit:=wdCharacter, Count:=1
' End With
'
' 'Tabelle formatieren
' If wrdApp.ActiveDocument.Tables.Count 1 Then
' MsgBox "Es gibt keine Tabellen im Word-Dokument.", vbMsgBoxSetForeground + vbExclamation, "Hinweis"
' Exit Sub
' Else
' With wrdApp.ActiveDocument.Tables(1)
' If .Style > "Tabellenraster" Then
' .Style = "Tabellenraster"
' End If
' .ApplyStyleHeadingRows = True
' .ApplyStyleLastRow = False
' .ApplyStyleFirstColumn = True
' .ApplyStyleLastColumn = False
' .ApplyStyleRowBands = True
' .ApplyStyleColumnBands = False
'
' 'formatierung
' 'Zellen miteinander verbinden
' .Cell(1, 2).Merge MergeTo:=.Cell(1, 3)
' .Cell(2, 2).Merge MergeTo:=.Cell(2, 3)
' .Cell(3, 2).Merge MergeTo:=.Cell(3, 3)
' .Cell(4, 2).Merge MergeTo:=.Cell(4, 3)
' .Cell(5, 2).Merge MergeTo:=.Cell(5, 3)
'
' 'Schrifttyp und Art der Zellen
' .Cell(1, 1).Range.Words(1).Bold = True 'Feld für LfNr
' .Cell(1, 2).Range.Words(1).Bold = True 'Feld für Header1
' .Cell(1, 2).Range.Characters(1).Italic = True
' .Cell(1, 3).Range.Words(1).Bold = True 'Feld für Punkte
' .Cell(2, 2).Range.Words(1).Bold = True 'Feld für Header2
' .Cell(2, 2).Range.Characters(1).Italic = True
' For i = 1 To 3
' .Cell(3, i).Range.Characters(1).Font.Size = 3
' .Cell(5, i).Range.Characters(1).Font.Size = 3
' Next i
' For i = 1 To 3
' .Cell(1, i).Range.Characters(1).Font.Name = "Verdana"
' .Cell(1, i).Range.Characters(1).Font.Size = 10
' Next i
' .Cell(2, 2).Range.Characters(1).Font.Name = "Verdana"
' .Cell(2, 2).Range.Characters(1).Font.Size = 10
' For i = 5 To 10
' .Cell(i, 2).Range.Characters(1).Font.Name = "Verdana"
' .Cell(i, 2).Range.Characters(1).Font.Size = 10
' .Cell(i, 3).Range.Characters(1).Font.Name = "Verdana"
' .Cell(i, 3).Range.Characters(1).Font.Size = 10
' Next i
'
' 'Spaltenbreiten definieren
' 'Spaltenhöhe
' 'gilt für alle Zeilen
' .Rows(1).Height = 25
' .Rows(2).Height = 25
' .Rows(3).Height = 10
' .Rows(4).Height = 30
' .Rows(5).Height = 10
' .Rows(6).Height = 15
' .Rows(7).Height = 15
' .Rows(8).Height = 15
' .Rows(9).Height = 15
' .Rows(10).Height = 15
'
' 'Spaltenbreite
' 'gilt für alle Zeilen
' For i = 1 To 10
' .Rows(i).Cells(1).Width = 35
' Next i
' For i = 1 To 5
' .Rows(i).Cells(2).Width = 390 'variabel definieren in Abhängigkeit der gesamten Tabellenbreite
' Next i
' For i = 6 To 10
' .Rows(i).Cells(2).Width = 25
' Next i
' For i = 6 To 10
' .Rows(i).Cells(3).Width = 365 'variabel definieren in Abhängigkeit der gesamten Tabellenbreite
' Next i
' For i = 1 To 5
' .Rows(i).Cells(3).Width = 25
' Next i
' For i = 6 To 10
' .Rows(i).Cells(4).Width = 25
' Next i
'
' 'Checkboxen einfügen
' For i = 6 To 10
' .Cell(i, 2).Range.ContentControls.Add (wdContentControlCheckBox)
' Next i
'
' 'Tabelle Linien ausschalten
' .Borders(wdBorderTop).LineStyle = wdLineStyleNone
' .Borders(wdBorderLeft).LineStyle = wdLineStyleNone
' .Borders(wdBorderBottom).LineStyle = wdLineStyleNone
' .Borders(wdBorderRight).LineStyle = wdLineStyleNone
' .Borders(wdBorderHorizontal).LineStyle = wdLineStyleNone
' .Borders(wdBorderVertical).LineStyle = wdLineStyleNone
' .Borders(wdBorderDiagonalDown).LineStyle = wdLineStyleNone
' .Borders(wdBorderDiagonalUp).LineStyle = wdLineStyleNone
' End With
' End If
' End If
'Tabelle kopieren (Anzahl der zu erzeugenden Tbellen)
wrdApp.ActiveDocument.Tables(1).Range.Copy
For Tb = 1 To iSelCnt1 - 1 'wo wird die Anzahl der zu erzeugender Tabellen festgelegt?? iSelCnt1??
wrdApp.ActiveDocument.Tables(1).Range.Copy
With wrdApp
.Selection.EndKey Unit:=wdStory
.Selection.TypeParagraph
.Selection.TypeParagraph
.Selection.Paste
End With
Next
'Text einfügen
'in Abhängigkeit von den in der ListBox gewählten Einträge sollen entsprechend die Anzahl der Tabellen erzeugt werden und dann mit
'den Inhalten aus Daten.xlsx befüllt werden
For AnzTb = 0 To wrdApp.ActiveDocument.Tables.Count - 1
-----> With wrdApp.ActiveDocument.Tables(AnzTb)
.Cell(1, 1).Range.Text = "000" 'Werte in Spalte 1 aus Daten.xlsx
.Cell(1, 2).Range.Text = "Header1" 'Werte in Spalte 3 aus Daten.xlsx
.Cell(1, 3).Range.Text = "1" 'Werte in Spalte 2 aus Daten.xlsx
.Cell(2, 2).Range.Text = "Header2" 'Werte in Spalte 4 aus Daten.xlsx
.Cell(4, 2).Range.Text = "Bild" 'Werte in Spalte 10 aus Daten.xlsx
.Cell(6, 3).Range.Text = "Antwort 1" 'Werte in Spalte 5 aus Daten.xlsx
.Cell(7, 3).Range.Text = "Antwort 2" 'Werte in Spalte 6 aus Daten.xlsx
.Cell(8, 3).Range.Text = "Antwort 3" 'Werte in Spalte 7 aus Daten.xlsx
.Cell(9, 3).Range.Text = "Antwort 4" 'Werte in Spalte 8 aus Daten.xlsx
.Cell(10, 3).Range.Text = "Antwort 5" 'Werte in Spalte 9 aus Daten.xlsx
End With
Next
Gruß
Michael