Question

Je suis en train de faire des tables à l'intérieur des tables dans Word. bien sûr dans le programme finall il sera dinamical, ce qui est dans cet exemple.

Voici mon exemple de code.

 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);

i Tout d'abord mis nouvelle table (2 rangées, une colonne) de la position du curseur, puis essayer de mettre i seconde table dans la cellule (1,1) et le troisième dans la cellule (2,1) de la première table. deuxième table possède également 2 lignes et 1 colonne, mais troisième table a 3 lignes et 1 colonne. mais au lieu de ce que je veux que je reçois deuxième et troisième petit morceau de table qu'une seule ligne, peu importe si je putt quelque chose dans Thier cellule ou not.i ne voyez que la dernière chaîne que je mets dans ce tableau.

encore plus, si je mets une rangée et de la colonne 2 à l'intérieur de la table première table, que tout est normal.

Pouvez-vous me aider.

merci, Rok

Était-ce utile?

La solution

Lorsque vous avez des problèmes pour créer ces tables dans le code, procédez comme suit:

  • Ouvrez Word
  • Enregistrer une nouvelle macro
  • Pendant l'enregistrement, construire la table que vous voulez, puis arrêter l'enregistrement.
  • Voir votre code de macro dans l'éditeur Visual Basic et essayer de traduire le code OLE Automation (qui est pas difficile, il est presque le même)

Autres conseils

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

Vous devrez faire la même chose pour bTable & cTable.

Lorsque vous ajoutez plus de 1 ligne / colonne, il faudra séparer frontière (i.e. pour séparer 1 rangée d'une autre OU séparée 1 colonne d'une autre).

Hope this helps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top