Hallo zusammen,
ich greife per Microsoft.Office.Interop auf Word zu um da eine Tabelle zu erzeugen, trotzdem ist es ja quasi VBA, deshalb dachte ich, es passt hier besser rein.
Mein Problem: Meine Tabelle besteht unter anderem aus einer Spalte "Kategorie" und einer Spalte "Einträge". Die Tabelle wird mit einer SQLite-Datenbank gefüttert.
Jetzt soll meine Software die Zellen in der Spalte Kategorie Mergen und den Namen der Kategorie reinschreiben. Das funktioniert soweit ganz gut, allerdings nicht, wenn die Tabelle durch einen Seitenumbruch gesplittet wird.
Hier der Codebereich für eine Kategorie:
Wenn also mehr als 1 Eintrag einer Kategorie vorhanden ist, sollen die Kategoriezellen gemerged werden, bei mehr als 4 soll der Name der Kategorie in die Zelle rein. Befindet sich jedoch ein Pagebreak in der Tabelle, passiert folgendes:
Ich denke das liegt daran, dass die Range nicht einfach per "MoveDown" festegelegt werden kann. Wie kann ich eine Zelle in einer Tabelle auswählen, wenn der Header sich auf jeder Seite wiederholt?
In Excel würde ich die Range der zu selektierenden Zellen einfach mit
auswählen, wie mache ich das mit den eindimensionalen Ranges in Word?
ich greife per Microsoft.Office.Interop auf Word zu um da eine Tabelle zu erzeugen, trotzdem ist es ja quasi VBA, deshalb dachte ich, es passt hier besser rein.
Mein Problem: Meine Tabelle besteht unter anderem aus einer Spalte "Kategorie" und einer Spalte "Einträge". Die Tabelle wird mit einer SQLite-Datenbank gefüttert.
Jetzt soll meine Software die Zellen in der Spalte Kategorie Mergen und den Namen der Kategorie reinschreiben. Das funktioniert soweit ganz gut, allerdings nicht, wenn die Tabelle durch einen Seitenumbruch gesplittet wird.
Hier der Codebereich für eine Kategorie:
Quellcode
- If numberMachines > 0 Then
- wordtable.Cell(kategorypos, 1).Select()
- If numberMachines > 1 Then
- word.Selection.MoveDown(wordoptions.WdUnits.wdLine, (numberMachines - 1), wordoptions.WdMovementType.wdExtend)
- word.Selection.Cells.Merge()
- word.Selection.ParagraphFormat.Alignment = Microsoft.Office.Interop.Word.WdParagraphAlignment.wdAlignParagraphCenter
- word.Selection.Cells.VerticalAlignment = Microsoft.Office.Interop.Word.WdCellVerticalAlignment.wdCellAlignVerticalCenter
- End If
- word.Selection.Shading.BackgroundPatternColor = -671039489
- If numberMachines > 4 Then
- word.Selection.Orientation = Microsoft.Office.Interop.Word.WdTextOrientation.wdTextOrientationUpward
- word.Selection.Font.Bold = True
- word.Selection.Font.Color = Microsoft.Office.Interop.Word.WdColor.wdColorWhite
- word.Selection.Font.Size = 8
- word.Selection.TypeText("Maschinen")
- End If
- With word.Selection.Borders(Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom)
- .LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
- .LineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth150pt
- .Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
- End With
- wordtable.Cell((kategorypos + numberMachines - 1), 2).Select()
- word.Selection.MoveRight(wordoptions.WdUnits.wdCharacter, 53, wordoptions.WdMovementType.wdExtend)
- With word.Selection.Borders(Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom)
- .LineStyle = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle
- .LineWidth = Microsoft.Office.Interop.Word.WdLineWidth.wdLineWidth150pt
- .Color = Microsoft.Office.Interop.Word.WdColor.wdColorBlack
- End With
- kategorypos = kategorypos + numberMachines
- End If
Wenn also mehr als 1 Eintrag einer Kategorie vorhanden ist, sollen die Kategoriezellen gemerged werden, bei mehr als 4 soll der Name der Kategorie in die Zelle rein. Befindet sich jedoch ein Pagebreak in der Tabelle, passiert folgendes:
Ich denke das liegt daran, dass die Range nicht einfach per "MoveDown" festegelegt werden kann. Wie kann ich eine Zelle in einer Tabelle auswählen, wenn der Header sich auf jeder Seite wiederholt?
In Excel würde ich die Range der zu selektierenden Zellen einfach mit
auswählen, wie mache ich das mit den eindimensionalen Ranges in Word?