Kako dobiti ovo: tekst iznad tabele + tabela + tekst ispod tabele u MS Wordu

Kako dobiti ovo: tekst iznad tabele + tabela + tekst ispod tabele u MS Wordu

offline
  • Miroslav R. Maričić
  • diplomirani inženjer mašinstva, profesor
  • Pridružio: 06 Jun 2012
  • Poruke: 229
  • Gde živiš: Hajdučica, Banat, Srbija

Искрсао ми је још један проблем. Потребно ми је следеће: на почетку документа да имам пар редова текста, онда би следила табела, па онда опет пар редова текста. Написао сам следећу функцију:

STATIC PROCEDURE MsWord()
LOCAL oWord, oText, oRange, oTable, x

oWord := CreateObject( "Word.Application" )
oWord:Documents:Add()
oWord:Caption := "Пробни рад - вежба"
oText := oWord:Selection()

oText:Font:Name := "Lucida Console"
oText:Font:Size := 10
oText:Font:Bold := .F.

// Tekst IZNAD tabele:

oText:TypeText( "Први ред текста..." )
oText:TypeParagraph()

oText:TypeText( "Други ред текста..." )
oText:TypeParagraph()

oText:TypeText( "Трећи ред текста..." )
oText:TypeParagraph()

// Kreiranje tabele:

oRange := oWord:ActiveDocument:Range()
oTable := oWord:ActiveDocument:Tables:Add( oRange, 2, 3)

x:=2
oTable:Rows:Add()
oTable:Rows:Add()
oTable:Rows:Add()
oTable:Cell(x, 1):Range:Font:Bold = .T.
oTable:Cell(x, 1):Range:Text := "Мирослав"
oTable:Cell(x, 2):Range:Text := "Раде"
oTable:Cell(x, 3):Range:Text := "Маричић"

x:=3
oTable:Cell(x, 1):Range:Font:Bold = .T.
oTable:Cell(x, 1):Range:Text := "Мирослав"
oTable:Cell(x, 2):Range:Text := "Раде"
oTable:Cell(x, 3):Range:Text := "Маричић"

oTable:Columns(1):Width := 40
oWord:Selection:Rows(1):Shading:Texture := 100

oTable:Rows(2):Cells:VerticalAlignment := 1
oTable:Columns(2):Cells:VerticalAlignment := 1
oTable:Columns(3):Select()
oText:ParagraphFormat:Alignment := 1

// Tekst ISPOD tabele:

oText:TypeText( "Овај текст би требало да буде ИСПОД табеле..." )
oText:TypeParagraph()

oWord:Visible := .T.
oWord:WindowState := 1

RETURN

Ова функција коју сам приказао не даје текст ИЗНАД табеле, сама табела је у реду, а текст који би требало да буде ИСПОД табеле, налази се у Cell( 1, 3 ).
Како би требало да изгледа код да бих добио изглед документа који желим?



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Nažalost, ne znam jezik koji koristiš, ali možda bi ovo moglo da proradi:
STATIC PROCEDURE MsWord() LOCAL oWord, oText, oRange, oTable, x oWord := CreateObject( "Word.Application" ) oWord:Documents:Add() oWord:Caption := "Пробни рад - вежба" oText := oWord:Selection() oText:Font:Name := "Lucida Console" oText:Font:Size := 10 oText:Font:Bold := .F. // Tekst IZNAD tabele: oText:TypeText( "Први ред текста..." ) oText:TypeParagraph() oText:TypeText( "Други ред текста..." ) oText:TypeParagraph() oText:TypeText( "Трећи ред текста..." ) oText:TypeParagraph() // Kreiranje tabele: oTable := oWord:ActiveDocument:Tables:Add( oText, 2, 3) x:=2 oTable:Rows:Add() oTable:Rows:Add() oTable:Rows:Add() oTable:Cell(x, 1):Range:Font:Bold = .T. oTable:Cell(x, 1):Range:Text := "Мирослав" oTable:Cell(x, 2):Range:Text := "Раде" oTable:Cell(x, 3):Range:Text := "Маричић" x:=3 oTable:Cell(x, 1):Range:Font:Bold = .T. oTable:Cell(x, 1):Range:Text := "Мирослав" oTable:Cell(x, 2):Range:Text := "Раде" oTable:Cell(x, 3):Range:Text := "Маричић" oTable:Columns(1):Width := 40 oWord:Selection:Rows(1):Shading:Texture := 100 oTable:Rows(2):Cells:VerticalAlignment := 1 oTable:Columns(2):Cells:VerticalAlignment := 1 oTable:Columns(3):Select() oText:ParagraphFormat:Alignment := 1 oText:EndKey(6) oText:TypeParagraph() // Tekst ISPOD tabele: oText:TypeText( "Овај текст би требало да буде ИСПОД табеле..." ) oText:TypeParagraph() oWord:Visible := .T. oWord:WindowState := 1 RETURN



offline
  • Miroslav R. Maričić
  • diplomirani inženjer mašinstva, profesor
  • Pridružio: 06 Jun 2012
  • Poruke: 229
  • Gde živiš: Hajdučica, Banat, Srbija

Пробао сам твој пример и неће да ради. Јавља следећу грешку:

Error WINOLE/1007 Argument error: ADD (DOS Error -2147352571)

Грешка је у следећој линији кода:
oTable := oWord:ActiveDocument:Tables:Add( oText, 2, 3)

На месту ове линије је пре био следећи код:
oRange := oWord:ActiveDocument:Range()
oTable := oWord:ActiveDocument:Tables:Add( oRange, 2, 3)

Да није проблем у оном "oRange" ?...

Иначе, користим "HMG 3.1.1.", тј. Harbour + Mini Gui граф. библиотека за Win (написао сам то у претходним постовима, кад си ми решио проблем у хоризонталном пораванању текста у табели).
Поззз

offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

oRange treba da bude oWord:Selection(). Koliko mi se čini oText je baš to.

offline
  • Miroslav R. Maričić
  • diplomirani inženjer mašinstva, profesor
  • Pridružio: 06 Jun 2012
  • Poruke: 229
  • Gde živiš: Hajdučica, Banat, Srbija

Пробао сам поново са кодом: oTable := oWord:ActiveDocument:Tables:Add( oText, 2, 3) и неће да ради, јавља горе наведену грешку. Али, снашао сам се. После много њушкања по Нету, написао сам овако нешто, и то ради добро:
...
...
nEnd:=oWord:ActiveDocument:Paragraphs(7):Range:End
oRange := oWord:ActiveDocument:Range( nEnd-1, nEnd-1 )
oTable := oWord:ActiveDocument:Tables:Add( oRange, 2, 3)
...
...
Текст испод табеле се појављује како треба, захваљујући оном што си ми написао у примеру:
oText:EndKey(6)
oText:TypeParagraph()

Тако да је и овај проблем решен...
Позз и хвала!

Ko je trenutno na forumu
 

Ukupno su 775 korisnika na forumu :: 23 registrovanih, 5 sakrivenih i 747 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amaterSRB, Arahne, Bane san, bokisha253, Frunze, Još malo pa deda, Kubovac, Marko Marković, mercedesamg, Mi lao shu, mikrimaus, mrvica78, nesa1962, nuke92, Ripanjac, RJ, Srki94, ss10, stokssone, styg, vladulns, x9