OLE Avtomatizacija - Word

Odpiranje, tiskanje, pisanje v datoteke in drugo.
Odgovori
provincjal
Prispevkov: 6
Pridružen: 06.08.2008 14:29:36

OLE Avtomatizacija - Word

Odgovor Napisal/-a provincjal » 17.07.2009 07:43:38

Pozdravljeni,

z OLE avtomatizacijo sem se že srečal pri delu z Excelom katerega se nepremerljivo več uporablja in je zato tudi precej več primerov uporabe na netu.

No moja težava pa je pri Wordu, saj hočem kreirati tabelo znotraj tabele.

Primer kode:

Koda: Izberi vse

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);  
prvo tabelo narišem na poziciji kurzorja, nato pa drugi dve tabeli vstavim v določeno celico osnovne tabele.

problem je v tem da se mi drugi tabeli narišeta kot enovrstični in ne dvovrstični oz. trovrstični kot sem zahteval. še večji štos je v temu da če pa kreiram tabelo ki ima 2 stolpca, vendar eno vrstico, je pa vse v redu. :?

probal sem tudi da bi kurzor postavil v to celico in nato dodal večvrstično tabelo, se mi pa zgodi da se tabele prekrivajo.

seveda sama koda ne bo izgledala takole, se bo dinamično risala. :)

Pepe
Prispevkov: 104
Pridružen: 06.10.2004 10:09:30

OLE Avtomatizacija - Word

Odgovor Napisal/-a Pepe » 17.07.2009 11:05:45

Si poskusil najprej macro v wordu posnet, da vidiš kako se on tega loti.

provincjal
Prispevkov: 6
Pridružen: 06.08.2008 14:29:36

OLE Avtomatizacija - Word

Odgovor Napisal/-a provincjal » 21.07.2009 11:14:39

hvala,

sem že prej dobil ta odgovor pa sem pozabil tukaj napisati da deluje.

Tako kot si rekel, rešitev sem našel preko macro recordinga, fora je v temu da se moraš premikati z Selection.MoveRight; in Selection.MoveDown; potem pa lahko insertaš multidimensional tabelce v druge tabelca.

BTW: A slučajno kdo ve kako bi posnel z macrotom kaj delaš z miško. Recimo da bi rad posnel kaj se naredi ko primem za rob tabelce in jo skrčim? Sedja maš uno kaseto pa do tega sploh ne moreš dostopat.

Odgovori