Frage

Ich versuche Tabellen innerhalb von Tabellen in Word zu machen. natürlich in finall Programm wird es dinamical sein, die nicht in dieser Probe ist.

Hier ist mein Beispielcode.

 var
  aTable, bTable, cTable : OLEVariant;
begin
  m_WordApplication := CreateOleObject('Word.Application') ;
  m_WordDocument := m_WordApplication.Documents.Add;

  aTable := m_WordDocument.Tables.Add(m_WordApplication.Selection.Range, 2, 1);
  aTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  aTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  bTable := m_WordDocument.Tables.Add(aTable.Cell(1, 1).Range, 2, 1);
  bTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  bTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  cTable := m_WordDocument.Tables.Add(aTable.Cell(2, 1).Range, 3, 1);
  cTable.Borders.Item(wdBorderLeft).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderRight).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderTop).LineStyle:=wdLineStyleSingle;
  cTable.Borders.Item(wdBorderBottom).LineStyle:=wdLineStyleSingle;

  m_WordDocument.SaveAs('C:/test.doc', False) ;
  m_WordApplication.Quit(False);

Erstens setzen i neue Tabelle (2 Zeilen, 1-Säule) auf Position des Cursors, und dann versuchen, i zweite Tabelle in der Zelle zu setzen (1,1) und die dritte in der Zelle (2,1) der ersten Tabelle. zweite Tabelle hat auch 2 Zeilen und 1 Spalte, aber dritte Tabelle hat 3 Zeilen und 1 Spalte. sondern von dem, was ich will, ich bekomme zweite und dritte Tabelle Whit nur eine Zeile, unabhängig davon, ob ich etwas in thier Zelle putten oder nicht.Ich immer sieht, nur die letzten Zeichenfolge i in der Tabelle setzen.

noch mehr, wenn ich legte 1 Zeile und Spalte 2 Tabelle innerhalb der ersten Tabelle, als alles normal ist.

können Sie mir helfen.

Danke, Rok

War es hilfreich?

Lösung

Wenn Sie Probleme haben, diese Tabellen in Code erstellen, gehen Sie wie folgt vor:

  • Öffnen Sie Word
  • Datensatz ein neues Makro
  • Während der Aufnahme, bauen Sie die gewünschte Tabelle, dann die Aufnahme beenden.
  • Sehen Sie den Makrocode in Visual Basic-Editor und versuchen, das zu OLE-Automatisierungscode zu übersetzen (was nicht schwer ist, ist es fast gleich)

Andere Tipps

aTable.Borders.Item(wdBorderVertical).LineStyle:=wdLineStyleSingle;
aTable.Borders.Item(wdBorderHorizontal).LineStyle:=wdLineStyleSingle;

Sie werden das gleiche für bTable & cTable zu tun haben.

Wenn Sie mehr als 1 Zeile / Spalte hinzufügen, wird es Grenze muß sie trennen (das heißt trennen 1 Zeile aus einer anderen oder getrennt 1 Spalte von einem anderen).

Hope, das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top