Domanda

Sto cercando di fare tavoli all'interno tabelle in Word. naturalmente, in programma finall sarà dinamical, che non è in questo esempio.

Ecco il mio codice di esempio.

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

Innanzitutto metto nuova tabella (2 righe, 1 colonna) sulla posizione del cursore, e poi provo a mettere seconda tabella nella cella (1,1) e terzo nella cella (2,1) della prima tabella. seconda tabella ha anche 2 righe e 1 colonna, ma terza tabella ha 3 righe e 1 colonna. ma invece di quello che voglio io ottenere secondo e il terzo tavolo di Pentecoste solo una riga, a prescindere se i putt qualcosa in burbero cellulare o not.i sempre vedere solo l'ultima stringa ho messo in tale tabella.

ancor più, se metto 1 riga e 2 tavolo colonna all'interno prima tabella, che tutto è normale.

mi potete aiutare.

grazie, Rok

È stato utile?

Soluzione

Quando si hanno problemi nella creazione tali tabelle nel codice, effettuare le seguenti operazioni:

  • Aprire Word
  • registrare una nuova macro
  • Durante la registrazione, costruire la tabella che si desidera, quindi interrompere la registrazione.
  • Vedi il tuo codice di macro in Visual Basic Editor e cercare di tradurre che per il codice OLE-automation (che non è così difficile, è quasi lo stesso)

Altri suggerimenti

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

Si dovrà fare lo stesso per bTable & CTable.

Quando si aggiunge più di 1 riga / colonna, avrà bisogno di frontiera per separarla (cioè per separare 1 fila da un altro o separati 1 colonna da un altro).

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top