12
Programiranje Kroz Aplikacije Lindon Camaj 9/10 1 PROGRAMIRANJE KROZ APLIKACIJE Završni ispit 1. a) (4 poena) Napisati funkciju Zad1 koja za argumente ima dva cijela broja M i N. Ako su oba broja pozitivna, funkcija treba da vrati veći od ta dva broja. Usuprotnom, funkcija treba da vrati sumu kvadrata ta dva broja. Function zad1(m As Integer, n As Integer) As Integer If m > 0 And n > 0 Then If m > n Then zad1 = m ElseIf n > m Then zad1 = n End If Else zad1 = m ^ 2 + n ^ 2 End If End Function b) (5 poena) Napisati Excel VBA proceduru UvecajK koja za argument ima opseg ćelija R i cijeli broj K. Procedura treba da uveća za K svaku ćeliju opsega R čiji je sadržaj broj. Po završetku, korisniku javiti pomoću MsgBox-a koliko je bilo takvih ćelija. Napomena: Za provjeru da li je sadržaj ćelije broj koristiti funkciju IsNumeric, koja vraća True ako je sadržaj njenog argumenta broj. Sub UvecajK(R As Range, K As Integer) Dim opseg As Range, br As Integer For Each opseg In R If IsNumeric(opseg.Value) = True and opseg.value <> "" Then opseg.Value = opseg.Value + K br = br + 1 End If Next MsgBox "broj takvih celija je: " & br End Sub 2. (7 poena) Napisati Excel VBA proceduru Broj kojom se od korisnika traži unos broja M (pomoću input boksa). Procedura treba da provjeri da li se unešeni broj nalazi u opsegu A1:D10 svakog lista aktivne radne sveske. Listovima koji sadrže broj M u tom opsegu na ime nadovezati slovo X. Napomena: Ime radnog lista se dobija i mijenja pomoću osobine Name objekta Worksheet. Sub Broj() Dim M As Integer, opseg As Range, ind As Boolean M = Val(InputBox("Unesi neki broj:", "Unesi Broj")) For i = 1 To ActiveWorkbook.Worksheets.Count ind = False For Each opseg In ActiveWorkbook.Worksheets(i).Range("A1:D10") If IsNumeric(opseg.Value) And opseg.Value = M Then ind = True Next If ind = True Then ActiveWorkbook.Worksheets(i).Name = ActiveWorkbook.Worksheets(i).Name & "X" End If Next End Sub

PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

  • Upload
    others

  • View
    19

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

1

PROGRAMIRANJE KROZ APLIKACIJE Završni ispit

1. a) (4 poena) Napisati funkciju Zad1 koja za argumente ima dva cijela broja M i N. Ako su oba broja pozitivna, funkcija treba da vrati veći od ta dva broja. Usuprotnom, funkcija treba da vrati sumu kvadrata ta dva broja.

Function zad1(m As Integer, n As Integer) As Integer If m > 0 And n > 0 Then If m > n Then zad1 = m ElseIf n > m Then zad1 = n End If Else zad1 = m ^ 2 + n ^ 2 End If End Function

b) (5 poena) Napisati Excel VBA proceduru UvecajK koja za argument ima opseg ćelija R i cijeli broj K. Procedura treba da uveća za K svaku ćeliju opsega R čiji je sadržaj broj. Po završetku, korisniku javiti pomoću MsgBox-a koliko je bilo takvih ćelija. Napomena: Za provjeru da li je sadržaj ćelije broj koristiti funkciju IsNumeric, koja vraća True ako je sadržaj njenog argumenta broj.

Sub UvecajK(R As Range, K As Integer) Dim opseg As Range, br As Integer For Each opseg In R If IsNumeric(opseg.Value) = True and opseg.value <> "" Then opseg.Value = opseg.Value + K br = br + 1 End If Next MsgBox "broj takvih celija je: " & br End Sub

2. (7 poena) Napisati Excel VBA proceduru Broj kojom se od korisnika traži unos broja M (pomoću input boksa). Procedura treba da provjeri da li se unešeni broj nalazi u opsegu A1:D10 svakog lista aktivne radne sveske. Listovima koji sadrže broj M u tom opsegu na ime nadovezati slovo X. Napomena: Ime radnog lista se dobija i mijenja pomoću osobine Name objekta Worksheet.

Sub Broj() Dim M As Integer, opseg As Range, ind As Boolean M = Val(InputBox("Unesi neki broj:", "Unesi Broj")) For i = 1 To ActiveWorkbook.Worksheets.Count ind = False For Each opseg In ActiveWorkbook.Worksheets(i).Range("A1:D10") If IsNumeric(opseg.Value) And opseg.Value = M Then ind = True Next If ind = True Then ActiveWorkbook.Worksheets(i).Name = ActiveWorkbook.Worksheets(i).Name & "X" End If Next End Sub

Page 2: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

2

3. (7 poena) Napisati Excel VBA proceduru NajduzeIme koja će u ćeliju A1 posljednjeg lista aktivne radne sveske upisati najduže ime fajla (uključujući ekstenziju) iz foldera C:\Temp, pri čemu treba uzeti u obzir fajlove svih tipova.

Sub NajduzeIme() Dim folder As String, fajl As String, max As Integer, br As Integer, ime As String folder = "C:\Temp\" fajl = Dir(folder & "*.*") max = 0 Do While fajl <> "" If max < Len(fajl) Then max = Len(fajl) ime = fajl End If fajl = Dir Loop ActiveWorkbook.Worksheets(ActiveWorkbook.Worksheets.Count).Cells(1, 1).Value = ime End Sub

4. (8 poena) Napisati Word VBA proceduru Samoglasnici koja u aktivnom Word dokumentu pronalazi najdužu riječ koja se završava malim samoglasnikom. Voditi računa o spejsu na kraju riječi. Pomoću MsgBox-a javiti pronađenu riječ, kao i koja je to riječ po redu u dokumentu. Ako nema takve riječi, javiti prigodnu poruku.

Sub Samoglasnici() Dim dok As Document, opseg As Range, max As Integer, e As Integer, s As String Dim text As String, rd As Integer Set dok = ActiveDocument max = 0 For i = 1 To dok.Words.Count s = Trim(dok.Words(i).text) e = Len(s) If Mid(s, e, 1) Like "[aeiou]" Then If max < Len(s) Then max = Len(s) text = s rd = i dok.Words(i).Font.Bold = True End If End If Next If max > 0 Then MsgBox "Najduza rijec koja na kraju ima samoglasnik je: " & text & " redni broj je: " & rd Else MsgBox "Nema takvih rijeci" End If End Sub

Page 3: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

3

5. (9 poena) Kreirati Word VBA proceduru ImaCifra koja će kreirati novu Excel radnu svesku pod nazivom Recenice.xls u istom folderu.Procedura treba da u posljednji radni list kreirane radne sveske iskopira sve rečenice iz Word dokumenta koje sadrže bar jednu cifru. Rečenice kopirati u prvu kolonu (ćelije A1, A2, A3...) po principu jedna ćelija - jedna rečenica. Ćelijama u koje su kopirane rečenice iz Word dokumenta postaviti font na Courier New, veličina 11pt.Na kraju snimiti i zatvoriti radnu svesku.

Sub ImaCifra() Dim book As Excel.Workbook, dok As Document, list As Excel.Worksheet, recenica As String, br As Integer Set book = Excel.Workbooks.Add Set dok = ThisDocument Set list = book.Worksheets(book.Worksheets.Count) For i = 1 To dok.Sentences.Count recenica = dok.Sentences(i).Text br = 0 For j = 1 To Len(recenica) If Mid(recenica, j, 1) Like "[0-9]" Then br = 1 Next If br > 0 Then list.Cells(i, 1).Value = recenica list.Cells(i, 1).Font.Name = "Courier New" list.Cells(i, 1).Font.Size = 11 End If Next book.SaveAs dok.Path & "\Recenice.xls" book.Close End Sub

Page 4: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

4

PROGRAMIRANJE KROZ APLIKACIJE Završni ispit

1. a) (4 poena) Napisati funkciju Zad2, koja za argumente ima dva cijela broja P i Q. Ako je bilo koji od njih paran, funkcija treba da vrati manji od ta dva broja. U suprotnom, funkcija treba da vrati kvadrat razlike brojeva P i Q.

Function Zad2(P As Integer, Q As Integer) As Integer If P Mod 2 = 0 And Q Mod 2 = 0 Then If P < Q Then Zad2 = P ElseIf Q < P Then Zad2 = Q End If Else Zad2 = (P - Q) ^ 2 End If End Function

b) (5 poena) Napisati Excel VBA proceduru Umanji2Puta koja za argument ima opseg ćelija R. Procedura treba da umanji dva puta svaku ćeliju opsega R čiji je sadržaj paran broj. Po završetku, korisniku javiti pomoću MsgBox-a koliko je bilo takvih ćelija. Napomena: Za provjeru da li je sadržaj ćelije broj koristiti funkciju IsNumeric, koja vraća True ako je sadržaj njenog argumenta broj.

Sub Umanji2Puta(R As Range) Dim br As Integer, opseg As Range br = 0 For Each opseg In R If IsNumeric(opseg.Value) = True and opseg.value <> "" Then If opseg.Value Mod 2 = 0 Then opseg.Value = opseg.Value / 2 br = br + 1 End If End If Next MsgBox "Broj takvih celija je: " & br End Sub

2. (7 poena) Napisati Excel VBA proceduru String kojom se od korisnika traži unos stringa S (pomoću input boksa). Procedura treba da provjeri da li je sadržaj neke ćelije opsega B2:F10 svakog lista aktivne radne sveske jednak S. Listovima koji zadovoljavaju taj uslov dodati ispred imena treba string S (na primjer, ako je staro ime List, a string S="HP", novo ime će biti HPList). Napomena: Ime radnog lista se dobija i mijenja pomoću osobine Name objekta Worksheet.

Sub String() Dim opseg As Range, list As Worksheet, S As String, ind As Boolean S = InputBox("Unesi string: ", "Unesi nesto") For i = 1 To ActiveWorkbook.Worksheets.Count Set list = ActiveWorkbook.Worksheets(i) ind = False For Each opseg In list.Range("B2:F10") If StrComp(opseg.Value, S, vbBinaryCompare) = 0 Then ind = True Next If ind = True Then list.Name = S & list.Name End If Next End Sub

Page 5: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

5

3. (7 poena) Napisati Excel VBA proceduru NajveciFajl koja će u ćeliju A1 drugog lista aktivne radne sveske upisati ime najvećeg fajla iz foldera C:\Temp, pri čemu treba uzeti u obzir fajlove svih tipova. Veličina fajla u bajtima se dobija pomoću funkcije FileLen, koja za argument ima string koji određuje ime fajla i put do njega. Primjer: FileLen("C:\Temp\Boa.doc") vraća veličinu fajla Boa.doc.

Sub NajveciFajl() Dim folder As String, fajl As String, max As Long, imeFajla As String folder = "C:\Temp\" fajl = Dir(folder & "*.*") max = 0 Do While fajl <> "" If max < FileLen(folder & fajl) Then max = FileLen(folder & fajl) imeFajla = fajl End If fajl = Dir Loop ActiveWorkbook.Worksheets(2).Cells(1, 1).Value = imeFajla End Sub

4. (8 poena) Napisati Word VBA proceduru JedanSamo koja u aktivnom Word dokumentu pronalazi najdužu riječ koja sadrži tačno jedan samoglasnik (mali ili veliki). Dobijenu riječ podvući i prikazati je pomoću MsgBox-a. Pomoć: Prva rečenica se podvlači sa Words(1).Font.Underline = True.

Sub JedanSamo() Dim riec As String, br As Integer, max As Integer, dok As Document, duzRiec As String Set dok = ActiveDocument br = 0: max = 0 For i = 1 To dok.Words.Count riec = dok.Words(i) br = 0 For j = 1 To Len(riec) If Mid(riec, j, 1) Like "[aeouiAEOUI]" Then br = br + 1 End If Next If br = 1 Then If max < Len(riec) Then max = Len(riec) duzRiec = riec End If End If Next MsgBox "Najduza riec koja ima samo jedan samoglasnik je: " & duzRiec End Sub

Page 6: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

6

5. (9 poena) Kreirati Word VBA proceduru NemaZarez koja će kreirati novu Excel radnu svesku pod nazivom BezZareza.xls u folderu C:\Temp. Procedura treba da u drugi radni list kreirane radne sveske iskopira sve rečenice iz Word dokumenta koje ne sadrže nijedan zarez. Rečenice kopirati u drugu kolonu (ćelije B1, B2, B3...) po principu jedna ćelija - jedna rečenica. Ćelijama u koje su kopirane rečenice iz Word dokumenta povećati postojeću veličinu fonta za 3pt. Na kraju snimiti i zatvoriti radnu svesku.

Sub NemaZareza() Dim book As Excel.Workbook, dok As Document, ind As Boolean, recenica As String Set book = Excel.Workbooks.Add Set dok = ThisDocument For i = 1 To dok.Sentences.Count ind = True recenica = dok.Sentences(i) For j = 1 To Len(recenica) If Mid(recenica, j, 1) Like "," Then ind = False Next If ind = True Then book.Worksheets(2).Cells(i, 2).Value = recenica book.Worksheets(2).Cells(i, 2).Font.Size = book.Worksheets(2).Cells(i, 2).Font.Size + 3 End If Next book.SaveAs "C:\Temp\BezZareza.xls" book.Close End Sub

Page 7: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

7

PROGRAMIRANJE KROZ APLIKACIJE Završni ispit

1. a) (4 poena) Napisati funkciju Zad3, koja za argumente ima dva cijela broja M i N.Ako je bilo koji od njih negativan, funkcija treba da vrati zbir ta dva broja. Usuprotnom, funkcija treba da vrati sumu cijelih brojeva između 1 i (M+N)2.

Function Zad3(M As Integer, N As Integer) As Integer Zad3 = 0 If M < 0 Or N < 0 Then Zad3 = M + N Else For i = 1 To (M + N) * 2 Zad3 = Zad3 + i Next End If End Function

b) (5 poena) Napisati Excel VBA proceduru Uvecaj5 koja za argument ima opseg ćelija R. Procedura treba da uveća za 5 svaku ćeliju opsega R čiji je sadržaj broj manji od 25. Po završetku, korisniku javiti pomoću MsgBox-a koliko je bilo takvih ćelija. Napomena: Za provjeru da li je sadržaj ćelije broj koristiti funkciju IsNumeric, koja vraća True ako je sadržaj njenog argumenta broj.

Sub Uvecaj5(R As Range) Dim br As Integer, opseg As Range br = 0 For Each opseg In R If IsNumeric(opseg.Value) = True And opseg.Value <> "" Then If opseg.Value < 25 Then opseg.Value = opseg.Value + 5 br = br + 1 End If End If Next MsgBox "Broj takvih celija je: " & br End Sub

2. (7 poena) Napisati Excel VBA proceduru Broj kojom se od korisnika traži unos stringa S (pomoću input boksa). Procedura treba da upiše string S bez prvog i posljednjeg karaktera u ćeliju B2 svakog lista čije je ime duže od stringa S. Napomena: Ime radnog lista se dobija i mijenja pomoću osobine Name objekta Worksheet.

Sub Broj() Dim S As String, book As Workbook Set book = ThisWorkbook S = InputBox("Unesi String", "Unesi Nesto") For i = 1 To book.Worksheets.Count If Len(S) < Len(book.Worksheets(i).Name) Then book.Worksheets(i).Cells(2, 2).Value = Mid(S, 2, (Len(S) - 2)) End If Next End Sub

Page 8: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

8

3. (7 poena) Napisati Excel VBA proceduru Preko10 koja će u drugu kolonu (ćelije B1, B2,...) prvog lista aktivne radne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera.

Sub Preko10() Dim fajl As String, list As Worksheet, i As Integer Set list = ActiveWorkbook.Worksheets(1) i = 1 fajl = Dir("C:\AA\BB\" & "*.xls") Do While fajl <> "" If Len(Mid(fajl, 1, Len(fajl) - 4)) > 10 Then list.Cells(i, 2).Value = fajl i = i + 1 End If fajl = Dir Loop End Sub

4. (8 poena) Napisati Word VBA proceduru VelSam koja u aktivnom Word dokumentu pronalazi najdužu rečenicu (ona sa najviše karaktera) koja ne sadrži nijedan veliki samoglasnik. Pomoću MsgBox-a javiti pronađenu rečenicu, kao i koja je to rečenica po redu u dokumentu. Ako nema takve rečenice, javiti prigodnu poruku.

Sub VelSam() Dim dok As Document, max As Integer, ind As Boolean, s As String, rd As Integer Set dok = ActiveDocument max = 0 For i = 1 To dok.Sentences.Count ind = True s = dok.Sentences(i).Text For j = 1 To Len(s) If Mid(s, j, 1) Like "[AEIOU]" Then ind = False End If Next If ind = True Then If max < Len(s) Then max = Len(s) rd = i End If End If Next MsgBox "Najveca recenica je: " & dok.Sentences(rd) & " po rednim brojem: " & rd End Sub

Page 9: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

9

5. (9 poena) Kreirati Word VBA proceduru Rijeci koja će kreirati novu Excel radnu svesku pod nazivom NekeRijeci.xls u istom folderu. Procedura treba da u prvi radni list kreirane radne sveske iskopira sve riječi sa preko 7 karaktera iz Word dokumenta čiji je drugi karakter malo slovo a ili e. Riječi kopirati u prvu kolonu (ćelije A1, A2, A3...) po principu jedna ćelija - jedna riječ. Ćelijama u koje su kopirane riječi iz Word dokumenta postaviti font na Times New Roman, veličina 12pt.Na kraju snimiti i zatvoriti radnu svesku.

Sub Rijec() Dim dok As Document, book As Excel.Workbook, s As String, j As Integer Set book = Excel.Workbooks.Add Set dok = ThisDocument j = 1 For i = 1 To dok.Words.Count s = dok.Words(i).Text If Len(s) > 7 And Mid(s, 2, 1) Like "[ae]" Then book.Worksheets(1).Cells(j, 1).Value = s book.Worksheets(1).Cells(j, 1).Font.Name = "Times New Roman" book.Worksheets(1).Cells(j, 1).Font.Size = 12 j = j + 1 End If Next book.SaveAs dok.Path & "\NekeRijeci.xls" book.Close End Sub

Page 10: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

10

PROGRAMIRANJE KROZ APLIKACIJE Završni ispit

1. a) (4 poena) Napisati funkciju Zad4, koja za argumente ima dva cijela broja A i B. Ako su oba broja neparna, funkcija treba da vrati vrijednost izraza A2+B3-17. U suprotnom, funkcija treba da vrati sumu prvih 20 prirodnih brojeva.

Function Zad4(A As Integer, B As Integer) As Integer Zad4 = 0 If A Mod 2 = 0 And B Mod 2 = 0 Then Zad4 = A * 2 + B * 3 - 17 Else For i = 1 To 20 Zad4 = Zad4 + i Next End If End Function

b) (5 poena) Napisati Excel VBA proceduru VeciOdX koja za argument ima opseg ćelija R i realan broj X. Procedura treba da odredi u koliko ćelija opsega R je upisan broj veći od X. Po završetku, korisniku javiti pomoću MsgBox-a koliko je bilo takvih ćelija. Napomena: Za provjeru da li je sadržaj ćelije broj koristiti funkciju IsNumeric, koja vraća True ako je sadržaj njenog argumenta broj.

Sub VeciOdX(R As Range, X As Double) Dim opseg As Range, br As Integer br = 0 For Each opseg In R If IsNumeric(opseg.Value) = True And opseg.Value <> "" Then If opseg.Value > X Then br = br + 1 End If End If Next MsgBox "Broj takvih celija je: " & br End Sub

2. (7 poena) Napisati Excel VBA proceduru TacnoQ kojom se od korisnika traži unos broja Q (pomoću input boksa). Procedura treba da upiše string „Dođe i ispit“ u ćeliju C3 svakog radnog lista čije ime ima tačno Q karaktera. Napomena: Ime radnog lista se dobija i mijenja pomoću osobine Name objekta Worksheet.

Sub TacnoQ() Dim Q As Integer, book As Workbook Q = Val(InputBox("Unesi neki broj:", "Unesi nesto")) Set book = ThisWorkbook For i = 1 To book.Worksheets.Count If Len(book.Worksheets(i).Name) = Q Then book.Worksheets(i).Cells(3, 3).Value = "Dodje Ispit" End If Next End Sub

Page 11: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

11

3. (7 poena) Napisati Excel VBA proceduru ImaEKO koja će u prvu kolonu (ćelije A1, A2,...) drugog radnog lista aktivne radne sveske upisati imena svih Word fajlova (ekstenzija .doc) iz foldera C:\BBB\AAA, čije ime sadrži string „eko“. Pomoć: Funkcija InStr(S1,S2) vraća poziciju prve pojave stringa S2 u stringu S1 (npr. InStr("Blagdan","dan") vraća broj 5). Ukoliko se S2 ne nalazi u S1, funkcija vraća 0.

Sub ImaEKO() Dim list As Worksheet, fajl As String, i As Integer Set list = ActiveWorkbook.Worksheets(2) i = 1 fajl = Dir("C:\BBB\AAA\" & "*.doc") Do While fajl <> "" If InStr(fajl, "eko") <> 0 Then list.Cells(i, 1) = fajl i = i + 1 End If fajl = Dir Loop End Sub

4. (8 poena) Napisati Word VBA proceduru PrviTreci koja u aktivnom Word dokumentu pronalazi riječ sa najviše karaktera čiji su prvi i treći karakter mali samoglasnici. Pomoću MsgBox-a javiti pronađenu riječ, kao i koja je to riječ po redu u dokumentu. Ako nema takve riječi, javiti prigodnu poruku.

Sub PrviTreci() Dim dok As Document, max As Integer, s As String, rdb As Integer Set dok = ActiveDocument max = 0: rdb = 0 For i = 1 To dok.Words.Count s = dok.Words(i).Text If Mid(s, 1, 1) Like "[aeiou]" And Mid(s, 3, 1) Like "[aeiou]" Then If max < Len(s) Then max = Len(s) rdb = i End If End If Next If rdb > 0 Then MsgBox "Trazena rijec je: " & dok.Words(rdb) & " , redni broj je: " & rdb Else MsgBox "Nema takvih rijeci" End If End Sub

Page 12: PROGRAMIRANJE KROZ APLIKACIJE Završni ispitradne sveske upisati imena svih Excel fajlova (ekstenzija .xls) iz foldera C:\AA\BB, čije ime (bez ekstenzije) ima preko 10 karaktera

Programiranje Kroz Aplikacije Lindon Camaj 9/10

12

5. (9 poena) Kreirati Word VBA proceduru NekeRijeci koja će kreirati novu Excel radnu svesku pod nazivom Rijeci.xls u folderu C:\VBA. Procedura treba da u drugi radni list kreirane radne sveske iskopira sve rečenice iz Word dokumenta čija je prva riječ „Ako“. Rečenice kopirati u treću kolonu (ćelije C1, C2, C3...) po principu jedna ćelija - jedna rečenica. Ćelijama u koje su kopirane rečenice iz Word dokumenta smanjiti postojeću veličinu fonta za 1pt. Na kraju snimiti i zatvoriti radnu svesku.

Sub NekeRijeci() Dim book As Excel.Workbook, list As Excel.Worksheet, dok As Document, s As String, j As Integer Set book = Excel.Workbooks.Add Set list = book.Worksheets(2) Set dok = ThisDocument j = 1 For i = 1 To dok.Sentences.Count s = Trim(dok.Sentences(i).Words(1).Text) If StrComp(s, "Ako") = 0 Then list.Cells(i, 3).Value = dok.Sentences(i).Text list.Cells(i, 3).Font.Size = list.Cells(i, 3).Font.Size - 1 j = j + 1 End If Next book.SaveAs "C:\VBA\Rijeci.xls" book.Close End Sub