150 likes | 243 Views
CU01 Informatika II 11 /13 Základy algoritmizace Objektov ý model a MS Word II. Metoda Range : nástroj pro výběr. Umožňuje výběr částí dokumentu znaků , slov a odstavců Objekt Document Vytváří objekt Range na základě počátečního a koncového bodu Dim ad As Document
E N D
CU01 Informatika II11/13Základyalgoritmizace Objektový model a MS Word II
Metoda Range: nástroj pro výběr • Umožňuje výběr částí dokumentu • znaků, slov a odstavců • Objekt Document • Vytváří objekt Range na základě počátečního a koncového bodu Dimad As Document Set ad=ActiveDocument DimrZnakyAsRange SetrZnaky= ad.Range(Start:=0, End:=3) DimrSlovaAsRange SetrSlova = ad.Range(Start:=ad.Words(1).Start, End:= ad.Words(3).End) DimrOdstavceAsRange Set rOdstavce= ad.Range(Start:= ad.Paragraphs(1).Range.Start, End:= ad.Paragraphs(1).Range.End) PB: 1. znak dokumentu KB: 3. znak dokumentu PB: první znak 1. slova KB: poslední znak 3. slova PB: počátek1. odstavce KB: konec 1. odstavce
PŘÍKLAD: Použití Metody range DimrngDocAsRange SubNewRange() Set doc = ActiveDocument SetrngDoc = doc.Range(Start:=0, End:=10) ... SetrngDoc = doc.Range(Start:=doc.Paragraphs(2).Range.Start, _ End:=doc.Paragraphs(3).Range.End) EndSub SubBoldRange() SetrngDoc = ActiveDocument.Range(Start:=0, End:=10) rngDoc.Bold= True EndSub SubInsertTextBeforeRange() SetrngDoc = ActiveDocument.Range(Start:=0, End:=0) rngDoc.InsertBefore "Hello " EndSub Realizace výběru Realizace výběru a změna vlastnosti písma Realizace výběru a vložení textu
vlastnost Range • Objekty Section, Paragraph, Bookmark, Cell • Vracíobjekt, který reprezentuje odpovídající část dokumentu DimrngParagraphAsRange SubSetParagraphRange() SetrngParagraph = ActiveDocument.Paragraphs(1).Range EndSub SubFormatFirstBookmark() SetrngBookmark= ActiveDocument.Bookmarks(1).Range WithrngBookmark .Bold = True .ParagraphFormat.Alignment = wdAlignParagraphCenter With.Font .Name = "Stencil" .Size = 15 EndWith EndWith EndSub První odstavec aktivního dokumentu První záložka aktivního dokumentu
Příklad: VÝBĚR A FORMÁTOVÁNÍ ČÁSTI DOKUMENTU • Procedura naformátuje první 3 odstavce dokumentu. • Nastaví typ písma a zarovnání odstavce. • Názvy parametrů umožňují zadávat parametry v odlišném pořadí vzhledem k definici. • Pojmenované konstanty zlepšují čitelnost programu – u Wordu prefix wd SubtriOdstavce() Dim rozsah AsRange Dimad As Document Set ad=ActiveDocument Set rozsah = ad.Range(Start:= ad.Paragraphs(1).Range.Start, _ End:=ad.Paragraphs(3).Range.End) Withrozsah .Font.Name = "Times New Roman" .ParagraphFormat.Alignment = wdAlignParagraphLeft EndWith End Sub
Příklad: vložení a formát textu Pojmenované parametry SubvlozNadpis() Dim rozsah As Range Set rozsah = ActiveDocument.Range(Start:=0, End:=0) With rozsah .InsertAfterText:= "Můj nadpis" .InsertParagraphAfter With .Font .Name = "Tahoma" .Size = 24 .Bold = True EndWith EndWith WithActiveDocument.Paragraphs(1) .Alignment = wdAlignParagraphCenter .SpaceAfter = 12 EndWith ’okraje WithActiveDocument.PageSetup .LeftMargin = .LeftMargin + InchesToPoints(0.5) .RightMargin = .RightMargin + InchesToPoints(0.5) EndWith EndSub Vestavěná funkce
Příklad: ZMĚNA VELIKOSTI MEZERY MEZI ODSTAVCI Cyklus pro procházení všemi položkami kolekce foreach<položka>in<kolekce> Procedura změní mezeru před těmi odstavci, kde je mezera 12 pt. Subodsazeni_Odstavce() Dim odstavec As Paragraph ForEachodstavec InActiveDocument.Paragraphs Ifodstavec.SpaceBefore= 12 Then odstavec.SpaceBefore= 6 EndIf Ifodstavec.SpaceAfter= 12 Then odstavec.SpaceBefore= 6 EndIf Nextodstavec EndSub
VYHLEDÁVÁNÍ: Objekt FIND • Reprezentuje nástroj pro operaci vyhledávání • Vlastnosti a metody objektu korespondují s obsahem vyhledávacího formuláře
Základní Metody a Vlastnosti Objektu FIND • Dostupný z Range a Selection • Metody • Execute – vrací logickou hodnotu True při nalezení textu, úspěšnost hledání se současně projevuje natavením vlastnosti Found PARAMETRY • FindText – hledaný řetězecnebo formátování FindText= “” FindText= “^p”odstavec FindText= “^t” tabulátor • MatchCase – rozlišovat malá/velká písmena (true/false) • MatchWholeWord– pouze při shodě celého slova (true/false) • Forward – směr vyhledávání () • Format – vyhledávat formátování • HitHighlight – provede vyhledání se zvýrazněním nalezených výskytů • ClearFormating – při vyhledávání potlačí formátování • Vlastnosti • Parent – objekt = vlastník nalezeného kontextu • Font – objekt reprezentující formát písma • Style – objekt reprezentující styl
Objekt Find: volání metody Execute • Metodu lze volat s předem nastavenými vlastnostmi objektu WithSelection.Find .ClearFormatting .Forward = True .Wrap = wdFindContinue .Text = strToFind .Execute EndWith • Nebo s argumenty metody v příkazu volání WithSelection.Find .ClearFormatting .Execute FindText:=strToFind, Forward:=True,Wrap:= wdFindContinue EndWith
PŘÍKLAD: Vyhledávání Nalezený text formátuje tučně ... Setrozsah = ActiveDocument.Content rozsah.Find.ExecuteFindText:="tučně", Forward:=True If rozsah.Find.Found = TrueThen rozsah.Bold = True EndIf ... Hledá formátování wdStyleHeading3text formátuje tučně WithActiveDocument.Content.Find .ClearFormatting .Style = wdStyleHeading3 DoWhile.Execute(FindText:="", Forward:=True, Format:=True) With.Parent .StartOf Unit:= wdParagraph, Extend:= wdMove .InsertAfter "Tip: " .Move Unit:= wdParagraph, Count:= 1 EndWith Loop EndWith
Příklad: Vyhledání a formátování Vyhledáa naformátuje tučně všechna slova se zadaným slovním základem kybernet (např. kybernetickou, kybernetický ap.) Subformatuj() strText = "kybernet" WithSelection.Find .ClearFormatting .Format = False .ExecuteFindText:= strText, Forward:= True DoWhile (.Found) AndMsgBox(prompt:="pokračovat?", buttons:=vbYesNo) = vbYes .Parent.Expand Unit:= wdWord .Parent.Font.Bold = True .Parent.CollapsewdCollapseEnd .ExecuteFindText:= strText, Forward:=True Loop EndWith EndSub
Nahrazení Řetězce: Objekt Find • Objekt Find lze použít i pro nahrazování řetězců • Nahradí výskyty hledaného řetězce (strFind) zadaným textem (strReplace) Sub Nahradit(strFindAsString, strReplaceAsString) Application.ScreenUpdating = False ActiveDocument.Content.Select WithSelection.Find .ClearFormatting .Forward = True .Wrap = wdFindContinue .ExecuteFindText:=strFind,Replace:=wdReplaceAll, _ ReplaceWith:=strReplace EndWith EndSub
SubExpandRange() DimrngParagraphAs Range SetrngParagraph = Selection.Range rngParagraph.SetRangeStart:=rngParagraph.Start, _ End:=rngParagraph.End + 10 EndSub SubFormatRange() ActiveDocument.Paragraphs(2).Range.SelectSelection.ParagraphFormat.Alignment = wdAlignParagraphCenter EndSub SubSelectRange() DimrngParagraphAsRange SetrngParagraph = ActiveDocument.Paragraphs(2).RangerngParagraph.SetRange Start:=rngParagraph.Start, _ End:=ActiveDocument.Paragraphs(3).Range.End rngParagraph.Select Selection.Font.Italic= True End Sub