1 / 23

Programiranje kroz aplikacije

Programiranje kroz aplikacije. Rad sa pasusima i tabelama u Word-u Word i Excel kroz primere. Objekt Paragraph. Objekt Paragraph je član kolekcije Paragraphs koja predstavlja sve pasuse specificiranog objekta tipa Document , Range ili Selection .

kaz
Télécharger la présentation

Programiranje kroz aplikacije

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programiranje kroz aplikacije Rad sa pasusima i tabelama u Word-u Word i Excel kroz primere

  2. Objekt Paragraph • Objekt Paragraph je član kolekcije Paragraphs koja predstavlja sve pasuse specificiranog objekta tipa Document, Range ili Selection. • Pojedini članovi kolekcije Paragraphs se navode pomoću njihovog rednog broja, npr. ActiveDocument.Paragraphs(3).

  3. Objekt Paragraph - Metode • Iz tabele sa osobinama vidimo da se uvlačenja, proredi i razmaci definišu u tačkama (pt). • Za pretvaranje milimetara, centimetara i inči u tačke se koriste metode MillimetersToPoints, CentimetersToPoints i InchesToPoints. • U pitanju su metode objekta Application.

  4. Objekt Paragraph - Primer Napisati proceduru koja sve pasuse sa više od 7 rečenica uvlači po 1cm sa obe strane, postavlja im obostrano poravnanje i dvostruki prored, razmiče ih 1.5cm od susednih pasusa i postavlja okvir koji se sastoji od jedne linije iznad i ispod pasusa. Linije okvira formatirati po želji. .Alignment = wdAlignParagraphJustify .LeftIndent = CentimetersToPoints(1) .RightIndent = CentimetersToPoints(1) .SpaceAfter = CentimetersToPoints(1.5) .SpaceBefore =CentimetersToPoints(1.5) .Space2 With .Borders(wdBorderTop) .LineStyle = wdLineStyleSingle .LineWidth = wdLineWidth600pt .Color = wdColorDarkRed End With With .Borders(wdBorderBottom) .LineStyle = wdLineStyleDashDot .LineWidth = wdLineWidth075pt .Color = wdColorAutomatic End With • Sub Pasusi() • Dim Pas As Paragraph • For Each Pas InThisDocument.Paragraphs • If Pas.Range.Sentences.Count > 7 Then • With Pas • End With • End If • Next • End Sub

  5. Objekti Tables i Table • Tabele se predstavljaju pomoću objekta Table, odnosno pomoću kolekcije Tables koja predstavlja sve tabele specificirane selekcije, opsega ili čitavog dokumenta. • Osobina Tables objekta Document vraća kolekciju Tables. • Pojedinačne tabele se dobijaju navođenjem rednog broja tabele u kolekciji Tables. Na primer, Documents("VBA.doc").Tables(1) vraća prvu tabelu u dokumentu VBA.doc

  6. Objekti Tables i Table - Osobine

  7. Kolekcija Tables – Metoda Add • Metoda Add kolekcije Tables kreira novu tabelu. • Sintaksa (pojednostavljena) metode je: Add(Range, NumRows, NumColumns) gde su argumenti (svi su obavezni) • Range – opseg u dokumentu gde smeštamo tabelu; • NumRows – broj vrsta nove tabele; • NumColumns – broj kolona nove tabele. • Na primer, kreiranje prazne tabele 2×3 na početku prvog dokumenta se vrši sa: Documents(1).Tables.Add Documents(1).Range(0,0), 2, 3 • Kreiranje prazne tabele 2×3 na kraju prvog dokumenta se vrši sa: Set Selek = Documents(1).Content Selek.Collapse wdCollapseEnd Documents(1).Tables.Add Selek, 2, 3

  8. Objekt Table - Metode

  9. Kolekcije Rows i Columns • Korisno je navesti i metodeAddi Deletekolekcija Rows i Columns. • Metoda Add u tabelu dodaje nove vrste i kolone. U oba slučaja, ova metoda ima jedan opcioni argument - redni broj vrste (kolone), ispred koje su ubacuje nova vrsta (kolona). Ukoliko se ovaj argument izostavi, dodavanje se vrši nakon poslednje vrste (kolone). • Na primer, ubacivanje nove vrste ispred pete vrste prve tabele aktivnog dokumenta bi išlo: Dim T As Table Set T = ActiveDocument.Tables(1) T.Rows.Add T.Rows(4) • Brisanje specificiranih vrsta i kolona se vrši metodom Delete. • Na primer, brisanje druge kolone prethodno definisane tabele T bi bilo: T.Columns(2).Delete

  10. Rad sa tabelama – Primer 1 U folderu C:\Temp\VBA se nalazi određeni broj Word dokumenata. Napisati proceduru koja kopira sve tabele iz svih dokumenata u datom folderu u dokument gde se nalazi makro. Sub KopTab() Dim S As String, Fold As String, T1 As Table, TekDok As Document Fold = "C:\Temp\VBA\" S = Dir(Fold & "*.doc") Do While S <> "" Set TekDok = Documents.Open(FileName:=Fold & S, Visible:=False) For Each T1 In TekDok.Tables T1.Range.Copy ThisDocument.Activate Selection.Paste Selection.TypeParagraph Next TekDok.Close S = Dir Loop End Sub Smeštanje kopirane tabele u ThisDocument

  11. Rad sa tabelama – Primer 2 Folder C:\Temp\VBA sadrži određeni broj Word dokumenata, pri čemu u svakom dokumentu prvi pasus sadrži ime i prezime studenta, drugi pasus sadrži jedinstveni kod studenta i treći pasus sadrži naslov diplomskog rada. Napisati proceduru koja ove podatke iz svih dokumenata i smešta ih u tabelu u dokumentu gde se nalazi makro. Tabela sadrži tri kolone - prva odgovara imenu i prezimenu studenta, druga jedinstvenom kodu i treća naslovu diplomskog rada. Tabela treba da se nađe na kraju dokumenta. Sub Diplomski() Dim Dok As Document, R As Range, Tab1 As Table Dim I As Integer, S As String, Tekst As String, Putanja As String Set R = ThisDocument.Content R.Collapse wdCollapseEnd Set Tab1 = ThisDocument.Tables.Add(R, 1, 3) With Tab1 .AutoFitBehavior wdAutoFitContent .Borders.InsideLineStyle = wdLineStyleSingle .Borders.OutsideLineStyle = wdLineStyleDouble End With

  12. Rad sa tabelama – Primer 2 (nastavak) Tab1.Cell(1, 1).Range.Text = "Ime i prezime" Tab1.Cell(1, 2).Range.Text = "Jedinstveni kod" Tab1.Cell(1, 3).Range.Text = "Naslov diplomskog rada" Putanja = "C:\Temp\VBA" S = Dir(Putanja & "\*.doc") I = 1 Do While S <> "" Tab1.Rows.Add I = I + 1 Set Dok = Documents.Open(FileName:=Putanja & "\" & S, Visible:=False) Tekst = Dok.Paragraphs(1).Range.Text Tab1.Cell(I,1).Range.Text = Left(Tekst, Len(Tekst) - 2) Tekst = Dok.Paragraphs(2).Range.Text Tab1.Cell(I,2).Range.Text = Left(Tekst, Len(Tekst) - 2) Tekst = Dok.Paragraphs(3).Range.Text Tab1.Cell(I,3).Range.Text = Left(Tekst, Len(Tekst) - 2) Dok.Close S = Dir Loop End Sub Eliminisanje karaktera Chr(13) i Chr(7) sa kraja stringa koji predstavlja sadržaj ćelije Word tabele.

  13. Simultani rad sa Word-om i Excel-om • Iz jednog Word dokumenta možemo kreirati, modifikovati, zatvoriti ili brisati Excel radne sveske i obrnuto. • Povezivanje ove dve aplikacije ćemo ilustrovati kroz četiri primera. • Da bi iz Word dokumenta mogli raditi sa Excel radnim sveskama, potrebno je u VBE podesiti referencu na objektnu biblioteku Excel-a. Ovo se radi pomoću opcije Tools/References, čijim se odabirom dobija dijalog boks sličan onom narednog slajda. Referenca se traži u polju Available References. • U slučaju Office-a 2003, referenca je Microsoft Excel 11.0 Object Library. U slučaju Office-a 2000 i 2007, verzije objektnih bibliotekasu 9.0 i 12.0, respektivno.

  14. Referenca na objektnu biblioteku Excel-a Podešavanje reference na objektnu biblioteku Excel-a

  15. Primer 1 Word dokument sadrži jednu tabelu. Napisati Word makro koji će kreirati novu Excel radnu svesku i u njen prvi radni list iskopirati tu tabelu. Radnu svesku snimiti pod imenom TabelaIzWorda.xls. Sub TabelaIzWorda() Dim RS As Excel.Workbook, Tabela As Table DimI As Integer, J As Integer, S As String Set RS = Excel.Workbooks.Add I = 1: J = 1 Set Tabela = ThisDocument.Tables(1) For I = 1 To Tabela.Rows.Count For J = 1 To Tabela.Columns.Count S = Tabela.Cell(I, J).Range.Text RS.Worksheets(1).Cells(I, J) = Left(S, Len(S) - 2) Next Next RS.SaveAs ThisDocument.Path & "\TabelaIzWorda" RS.Close Set RS = Nothing End Sub Eliminisanje karaktera Chr(13) i Chr(7) sa kraja stringa koji predstavlja sadržaj ćelije Word tabele.

  16. Primer 2 U datom Word dokumentu kreirati proceduru koja ćeu istom folderu kreirati Excel svesku Sveska.xls i u njen prvi radni list iskopirati sve reči iz Word dokumenta sa više od 7 karaktera, ne računajući blanko na kraju riječi. Riječi kopirati u treću kolonu (ćelije C1, C2, C3).Ukoliko ne postoji nijedna takva riječ, u ćeliju A1 prvog radnog lista upisati „Ne postoje riječiduže od 7“. Procedura sa poziva klikom na dugme unutar dokumenta. Sub Preko7() Dim RS As Excel.Workbook Dim I As Integer, Rec As Range Set RS = Excel.Workbooks.Add I = 0 For Each Rec In ThisDocument.Words If Len(Trim(Rec.Text)) > 7 Then I = I + 1 RS.Worksheets(1).Cells(I, 3) = Trim(Rec.Text) End If Next If I = 0 Then RS.Worksheets(1).Cells(1, 3) ="Ne postoje riječi duže od 7" RS.SaveAs ThisDocument.Path & "\Sveska" RS.Close Set RS = Nothing End Sub

  17. Primer 2 – Kontrole u dokumentu • Osim na korisničku formu, kontrolu možemo dodati i u sam dokument. • Dodavanje kontrole se vrši koristeći Control Toolbox-a, u tri jednostavna koraka: • Aktivirati Design Mode na Control Toolbox-u • Pozicionirati se u dokumentu • Kliknuti na željenu kontrolu. • Na programski kod kontrole se prebacujemo dvostrukim klikom na kontrolu u Design Mode-u. • Kodovi svih kontrola kreiranih na ovaj način se nalaze u okviru objekta ThisDocument. Nakon programiranja, potrebno je izaći iz Design Mode-a da bi testirali i koristili našu kontrolu. • U našem primeru, ubacujemo dugme i procedura izgleda: Private Sub CommandButton1_Click() Call Preko7 End Sub

  18. Još malo o kontrolama u dokumentu • Pošto su kontrole deo samog dokumenta, najjednostavnije ih je referencirati preko objekta ThisDocument. • Recimo da smo dokumentu dodali klizač i pomoću njega želimo da menjamo veličinu fonta prvog pasusa dokumenta. Procedura koja bi vršila ovu funkciju bi bila: Private Sub ScrollBar1_Change() ThisDocument.Paragraphs(1).Range.Font.Size = _ Val(ThisDocument.ScrollBar1.Value) End Sub ili Private Sub ScrollBar1_Change() Me.Paragraphs(1).Range.Font.Size = Val(Me.ScrollBar1.Value) End Sub • Pored korisničkih formi, gde smo koristili ključnu reč Me, pomoću te reči sebe mogu referencirati i objekti kao što su dokumenti (Word) i radne sveske i listovi (Excel).

  19. Primer 3 Napisati Excel makro koji će kreirati novi Word dokument sa jednom tabelom u koju će kopirati trenutnu selekciju ćelija. Dokument snimiti pod imenom TabelaIzExcela.doc. Sub TabelaIzExcela() Dim Dok As Document, BrV as Integer, BrK as Integer BrV = Selection.Rows.Count BrK = Selection.Columns.Count Set Dok = Word.Documents.Add Dok.Tables.Add Dok.Paragraphs(1).Range, BrV, BrK For I = 1 To BrV For J = 1 To BrK Dok.Tables(1).Cell(I, J).Range = Selection.Cells(I, J) Next Next Dok.SaveAs ThisWorkbook.Path & "\TabelaIzExcela.doc" Dok.Close Set Dok = Nothing End Sub Prvo podesiti referencu na objektnu biblioteku Word-a!!!

  20. Primer 4 Radna sveska Zalihe.xls predstavlja zalihe firme koja prodaje računarske komponente. Sveska sadrži šifre, nazive, jedinične cene i trenutnu količinu proizvoda, na način prikazan ispod. Potrebno je ažurirati stanje zaliha, pri čemu jespisak novopristiglih komponenti dat u Word dokumentu Doprema.doc, koji se nalazi u istom folderu. Ažuriranje se vrši tako što se postojećim komponentama uveća količina za iznos dat u fajlu Doprema.doc. U svesku Zalihe.xls dodati dugme koje vrši ažuriranje. Doprema.doc Zalihe.xls

  21. Primer 4 Sub Azuriraj() Dim Dok As Document, list As Worksheet, vr As Integer, k As Integer Set list = ThisWorkbook.Worksheets(1) Set Dok = Word.Documents.Open(ThisWorkbook.Path & "\Doprema.doc") With Dok.Tables(1) For k = 2 To .Rows.Count vr = 2 Do While list.Cells(vr, 1) <> "" If list.Cells(vr, 1) = Val(.Cell(k, 1).Range) Then list.Cells(vr, 4) = list.Cells(vr, 4) + Val(.Cell(k, 3).Range) End If vr = vr + 1 Loop Next End With ThisWorkbook.Save Dok.Close Set Dok = Nothing End Sub

  22. Primer 4 - Kontrole • Kod Excel-a, prvo odaberemo kontrolu, pa onda kliknemo gde želimo da se nađe ta kontrola. Naravno, to radimo u Design Mode-u. • Ako želimo da se kontrola prostire preko čitavih ćelija, potrebno je držati dugme Alt prilikom smeštanja kontrole. • Programski kod dodate kontrole se nalazi u okviru radnog lista koji sadrži kontrolu. • U našem slučaju, procedura je Private Sub CommandButton1_Click() Call Azuriraj End Sub

  23. KRAJ

More Related