Objektni model Word-a

Struktura dokumenta

Elementi prve tri kolekcije su objekti tipa Range, dok su elementi kolekcije Paragraphs objekti tipa Paragraph.

Objekat Font

Sadrži karakteristike fonta (ime fonta, veličina, boja i sl). Pojavljuje se kao svojstvo i kod objekta Range i kod objekta Selection.
Name Vrednost ovog svojstva je ime fonta (Arial, Courier, Courier New, Tahoma, Times New Roman i sl) pod navodnicima. Da bi se promenio font u Arial, dovoljna je sledeća naredba:
deoDokumenta.Range.Font.Name = "Arial"
gde je deoDokumenta ceo dokument ili pasus.
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako formatirala 2. reč 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Words(2).Font.Name = "Arial"
Slično važi i za objekat Selection:
Selection.Font.Name = "Arial"
Size Vrednost ovog svojstva je veličina fonta u pointima (pt). Da bi se promenila veličina fonta u 14pt, dovoljna je sledeća naredba:
deoDokumenta.Range.Font.Size = 14
gde je deoDokumenta ceo dokument ili pasus.
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako formatirala 2. reč 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Words(2).Font.Size = 14
Slično važi i za objekat Selection:
Selection.Font.Size = 14
Color Vrednost ovog svojstva je konstanta koja predstavlja boju. Ime konstante počinje sa 'wdColor', a zatim sledi ime boje (npr. wdColorRed, wdColorGreen, wdColorBlue itd). Ove konstante se ne moraju pamtiti napamet, jer prilikom kucanja naredbe dodele, odmah nakon znaka jednakosti VB editor nudi meni sa svim konstantama.

Da bi se promenila boja fonta u crvenu, dovoljna je neka od sledećih naredbi:
deoDokumenta.Range.Font.Color = wdColorRed
gde je deoDokumenta ceo dokument ili pasus.
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako formatirala 2. reč 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Words(2).Font.Color = wdColorRed
Slično važi i za objekat Selection:
Selection.Font.Color = wdColorRed

Objekat Range

Objekat Range ("opseg") predstavlja povezani deo dokumenta, tj. obuhvata sve karaktere između dve zadate pozicije (početne i završne). Svaki strukturni deo dokumenta (karakter, reč, rečenica, pasus, sekcija, ceo dokument) ima svoj opseg karaktera i to je predstavljeno upravo objektom Range.

Ovaj objekat je jedan od najvašnijih u objektnom modelu Word-a jer se bilo kakva obrada nekog dela dokumenta (karaktera, reči, rečenice, pasusa, sekcije, celog dokumenta) svodi na na rad sa objektom Range. Kada je u pitanju rad sa celim dokumentom ili sa pasusom, klase Document i Paragraph imaju svojstvo Range:

ActiveDocument.Range.Bold = True; 'formatiramo opseg celog dokumenta: sve je bold

ActiveDocument.Paragraphs(1).Range.Italic = True; 'formatiramo opseg prvog pasusa u dokumentu: prvi pasus je sada italic

Ako želimo da obradimo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range.
ActiveDocument.Paragraphs(3).Words(2).Bold = True; '2. reč 3. pasusa u aktivnom dokumentu je bold

ActiveDocument.Sentences(1).Italic = True; '1. rečenica aktivnog dokumenta je sada italic

(Dakle, ActiveDocument.Paragraphs(3).Words(2) je tipa Range, ActiveDocument.Sentences(1) je tipa Range itd.)

Formatiranje pomoću svojstva Range

Bold Da bi se formatirao dokument ili pasus tako da tekst bude naglašen, dovoljna je sledeća naredba:
deoDokumenta.Range.Bold = True
gde je deoDokumenta ceo dokument ili pasus.
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako formatirala 2. reč 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Words(2).Bold = True
Italic Da bi se formatirao dokument ili pasus tako da bude u kurzivu, dovoljna je sledeća naredba:
deoDokumenta.Range.Italic = True
gde je deoDokumenta ceo dokument ili pasus.
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako formatirala 2. karakter 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Characters(2).Italic = True
Underline Da bi se formatirao dokument ili pasus tako da postane podvučen, dovoljna je sledeća naredba:
deoDokumenta.Range.Underline = tipPodvlačenja
gde je deoDokumenta ceo dokument ili pasus, a tipPodvlačenja je neka od WdUnderline konstanti. Neke WdUnderline konstante su:
  • wdUnderlineNone (nema podvlačenja)
  • wdUnderlineSingle (podvlačenje jednom linijom)
  • wdUnderlineDouble (podvlačenje dvostrukom linijom)
  • wdUnderlineDotted (podvlačenje tačkastom linijom)
  • wdUnderlineDash (podvlačenje isprekidanim crticama)
  • wdUnderlineDotDash (podvlačenje naizmeničnim tačkama i isprekidanim crticama)
Ako formatiramo karakter, reč ili rečenicu, koristimo činjenicu da su elementi kolekcija Characters, Words i Sentences upravo objekti klase Range. Npr, da bi se tako jednom linijom podvukla 2. reč 3. pasusa u aktivnom dokumentu, dovoljno je uraditi ovako nešto:
ActiveDocument.Paragraphs(3).Words(2).Underline = wdUnderlineSingle

Velika i mala slova (konverzije)

Case Vrednost ovog svojstva je neka od wdCharacterCase konstanti i odnosi se na mala i velika slova u odgovarajućem delu dokumenta. Neke wdCharacterCase konstante su:
  • wdLowerCase (sva su slova mala)
  • wdUpperCase (sva su slova velika)
  • wdToggleCase (zameni mala velikim i velika malim: Pera => pERA)
  • wdTitleWord (prvo slovo reči je veliko)
  • wdTitleSentence (prvo slovo rečenice je veliko)
Npr. ako je potrebno da 3. reč u 2. rečenici dokumenta ima veliko početno slovo, to postižemo komandom:
ActiveDocument.Sentences(2).Words(3).Case = wdTitleWord
Ove konstante nije potrebno učiti napamet, jer onog trenutka kada se otkuca znak =, Visual Basic Editor nudi listu vrednosti iz kojih se lako bira ona prava (zahvaljujući sugestivnom imenu)

Promena fonta (boja, veličina)

Za detalje videti Objekat Font

Manje strukturne jedinice

Text Tekst zadatog opsega
Characters Kolekcija objekata tipa Range od kojih svakih predstavlja jedan karakter iz zadatog opsega.
Words Kolekcija objekata tipa Range od kojih svakih predstavlja jednu reč iz zadatog opsega.
Sentences Kolekcija objekata tipa Range od kojih svakih predstavlja jednu rečenicu iz zadatog opsega.
Paragraphs Kolekcija objekata tipa Paragraph od kojih svakih predstavlja jedan pasus iz zadatog opsega.

Objekat Selection

Prilikom rada sa Word dokumentom, deo dokumenta se može obeležiti (markirati, izabrati, eng. select). Unos teksta sa tastature zamenjuje markirani tekst (eng. selection). Ukoliko nijedan deo teksta nije obeležen, tekst se unosi na trenutnoj poziciji kursora.

Objekat Selection ima različito značenje upravo u zavisnosti od toga koja je od navedenih mogućnosti u pitanju: ako nijedan deo dokumenta nije obeležen, Selection predstavlja poziciju kursora u dokumentu na kojoj će biti umetnut tekst sa tastature; ako je neki deo dokumenta obeležen, Selection tada predstavlja taj deo dokumenta (eng. current selection). S obzirom da u jednom prozoru u svakom trenutku postoji samo jedan deo dokumenta koji je obeležen, to je i objekat Selection jedinstven za svaki pojedinačni otvoreni dokument. Pritom, u svakom trenutku je aktivan samo jedan objekat Selection u programu Word jer je u svakom trenutku aktivan samo jedan prozor.

Promena fonta (boja, veličina)

Za detalje videti Objekat Font

Svojstva

Text Tekst obeleženog dela dokumenta
Characters Kolekcija objekata tipa Range od kojih svakih predstavlja jedan karakter.
Words Kolekcija objekata tipa Range od kojih svakih predstavlja jednu reč.
Sentences Kolekcija objekata tipa Range od kojih svakih predstavlja jednu rečenicu.
Paragraphs Kolekcija objekata tipa Paragraph od kojih svakih predstavlja jedan pasus.

Metodi

Extend Prvi poziv ovog metoda uključuje režim EXTend. Ako je taj režim već uključen, naknadni pozivi metoda Extend obeležavaju različite delove dokumenta (reč, rečenicu, pasus, sekciju, ceo dokument) tako što svaki sledeći poziv proširuje selekciju:
  • Jedan poziv: uključuje režim EXTend;
  • Dva poziva: obeležava rečenicu u kojoj se nalazi kursor;
  • Tri poziva: obeležava pasus u kom se nalazi kursor;
  • Četiri poziva: obeležava sekciju (odeljak) u kojoj se nalazi kursor;
  • Pet poziva: obeležava ceo dokument.
EscapeKey Služi za izlazak iz režima EXTend.
Collapse Ako je deo dokumenta bio obeležen, pozivanjem ovog metoda se to poništava. Kursor se pomera na početak ili kraj prethodno obeleženog teksta u zavisnosti od vrednosti argumenta Direction (wdCollapseEnd ili wdCollapseStart; podrazumevana je vrednost wdCollapseStart, tj. pomeranje kursora na početak prethodno obeleženog teksta).
Cut premešta obeleženi deo dokumenta u Clipboard, tj. briše ga iz dokumenta
Copy kopira obeleženi deo dokumenta u Clipboard.
Paste zamenjuje obeleženi deo dokumenta sadržajem Clipboard-a.
MoveDown Ukoliko nijedan deo teksta nije obeležen, ovim metodom se pomera kursor nadole za vrednost argumenta Unit (wdLine ili wdParagraph, podrazumevano je pomeranje za jednu liniju). Vrednost argumenta Count određuje za koliko jedinica se vrši pomeranje.
MoveLeft Ukoliko nijedan deo teksta nije obeležen, ovim metodom se pomera kursor ulevo za vrednost argumenta Unit (wdCharacter, wdWord ili wdSentence, podrazumevano je pomeranje za jedan karakter). Vrednost argumenta Count određuje za koliko jedinica se vrši pomeranje.
MoveRight Ukoliko nijedan deo teksta nije obeležen, ovim metodom se pomera kursor udesno za vrednost argumenta Unit (wdCharacter, wdWord ili wdSentence, podrazumevano je pomeranje za jedan karakter). Vrednost argumenta Count određuje za koliko jedinica se vrši pomeranje.
MoveUp Ukoliko nijedan deo teksta nije obeležen, ovim metodom se pomera kursor nagore za vrednost argumenta Unit (wdLine ili wdParagraph, podrazumevano je pomeranje za jednu liniju). Vrednost argumenta Count određuje za koliko jedinica se vrši pomeranje.

Objekat Paragraph

Ovaj objekat predstavlja jedan pasus u dokumentu. Detaljnija dokumentacija Paragraph (MSDN)

Svojstva

Range Opseg pasusa. Preko ovog svojstva može se pristupiti pojedinačnim karakterima, rečima i rečenicama pasusa. Npr:
  • ActiveDocument.Paragraphs(2).Range.Characters(5) je 5. karakter 2. pasusa aktivnog dokumenta.
  • ActiveDocument.Paragraphs(3).Range.Words(4) je 4. reč 3. pasusa aktivnog dokumenta.
  • ActiveDocument.Paragraphs(1).Range.Characters(3) je 3. rečenica 1. pasusa aktivnog dokumenta.
Alignment Poravnanje pasusa. Vrednost je neka od konstanti wdAlignParagraph(Left|Center|Right|Justify|...)
DropCap Isticanje prvog slova u pasusu. Primer:
With ActiveDocument.Paragraphs(1)

 .DropCap.Enable

 .DropCap.LinesToDrop = 2 'broj linija koje prvo slovo zauzima

 .DropCap.Position = wdDropNormal 'pozicija prvog slova u odnosu na pasus 

End With
FirstLineIndent Vrednost u pt za koju je pasus uvučen udesno (pozitivna vrednost u pt) ili ulevo (negativna vrednost u pt). Ako programer želi da izrazi vrednost uvlake u centimetrima, mora da koristi funkciju CentimetersToPoints koja pretvara vrednost iz cm u pt.
Prvi primer uvlači prvu liniju drugog pasusa u aktivnom dokumentu za 1.27cm.
 ActiveDocument.Paragraphs(2).FirstLineIndent = CentimetersToPoints(1.27)
Drugi primer kreira viseću uvlaku (hanging indent) u prvoj liniji drugog pasusa aktivnog dokumenta (tj. prva linija pasusa je pomerena ulevo za 0.5cm).
ActiveDocument.Paragraphs(2).FirstLineIndent = CentimetersToPoints(-0.5)
LeftIndent Leva margina pasusa (izražena u pt). Ako programer želi da izrazi vrednost margine u centimetrima, mora da koristi funkciju CentimetersToPoints koja pretvara vrednost iz cm u pt. Primer:
ActiveDocument.Paragraphs(2).LeftIndent = CentimetersToPoints(3)
RightIndent Desna margina pasusa (izražena u pt). Ako programer želi da izrazi vrednost margine u centimetrima, mora da koristi funkciju CentimetersToPoints koja pretvara vrednost iz cm u pt. Primer:
ActiveDocument.Paragraphs(2).RightIndent = CentimetersToPoints(3)
SpaceAfter Razmak izmedju tekućeg i narednog pasusa (izražen u pt). Primer:
ActiveDocument.Paragraphs(2).SpaceAfter = 6
Ako programer želi da izrazi vrednost razmaka u centimetrima, mora da koristi funkciju CentimetersToPoints koja pretvara vrednost iz cm u pt.
SpaceBefore Razmak izmedju tekućeg i prethodnog pasusa (izražen u pt). Primer:
ActiveDocument.Paragraphs(2).SpaceBefore = 6
Ako programer želi da izrazi vrednost razmaka u centimetrima, mora da koristi funkciju CentimetersToPoints koja pretvara vrednost iz cm u pt.

Metodi

Indent Uvlačenje pasusa za 1 nivo. Primer:
ActiveDocument.Paragraphs(2).Indent
Outdent Poništenje uvlačenja pasusa za 1 nivo (suprotno od Indent). Primer:
ActiveDocument.Paragraphs(2).Outdent