Specijalistički rad. Automatizovanje procedure izrade tenderske dokumentacije korišćenjem VBA

Similar documents
Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

Podešavanje za eduroam ios

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

SAS On Demand. Video: Upute za registraciju:

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Otpremanje video snimka na YouTube

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

Tutorijal za Štefice za upload slika na forum.

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

BENCHMARKING HOSTELA

NIS PETROL. Uputstvo za deaktiviranje/aktiviranje stranice Veleprodajnog cenovnika na sajtu NIS Petrol-a

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Nejednakosti s faktorijelima

Uvod u relacione baze podataka

PROJEKTNI PRORAČUN 1

1. Instalacija programske podrške

Trening: Obzor financijsko izvještavanje i osnovne ugovorne obveze

Windows Easy Transfer

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Pravljenje Screenshota. 1. Korak

Port Community System

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

RANI BOOKING TURSKA LJETO 2017

Babylon - instalacija,aktivacija i rad sa njim

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

OBAVJESTENJE 0 NABAVCI /18 KP "VODOVOD I KANALIZACIJA" A.O. BROD. Nikole Tesle Brod (sp bl) (053)

Korak X1 X2 X3 F O U R T W START {0,1}

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

za STB GO4TV in alliance with GSS media

Pokretanje (startovanje) programa Microsoft Word

Klasterizacija. NIKOLA MILIKIĆ URL:

3D GRAFIKA I ANIMACIJA

STRUČNA PRAKSA B-PRO TEMA 13

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

mdita Editor - Korisničko uputstvo -

Kako instalirati Apache/PHP/MySQL na lokalnom kompjuteru pod Windowsima

Advertising on the Web

Office 365, upute za korištenje elektroničke pošte

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

Direktan link ka kursu:

Mindomo online aplikacija za izradu umnih mapa

UPUTE ZA INSTALACIJU PROGRAMA FINBOLT 2007 tvrtke BOLTANO d.o.o.

2. Kreiranje nove baze podataka

Slobodni softver za digitalne arhive: EPrints u Knjižnici Filozofskog fakulteta u Zagrebu

Bušilice nove generacije. ImpactDrill

P R O J E K T N I R A D

Dežurni nastavnik: Ispit traje 3 sata, prvih sat vremena nije dozvoljeno napuštanje ispita. Upotreba literature nije dozvoljena.

Struktura i organizacija baza podataka

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU

SADRŽAJ. Besplatna registracija. Odabir platforme za trgovanje. Čime želimo trgovati? Trgovanje

Poglavlje 1 POČETAK RADA SA MICROSOFT OFFICE-OM 2016

Uvod u MS Word. Nova znanja. Novi pojmovi

Da bi se napravio izvještaj u Accessu potrebno je na izborniku Create odabrati karticu naredbi Reports.

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

Ikone za brz pristup alatima. Slovne oznake kolona. ime. Traka sa alatima. Dugme Office Brojčane oznake redova

LabVIEW-ZADACI. 1. Napisati program u LabVIEW-u koji računa zbir dva broja.

URF (Portal za sudionike) PRIRUČNIK ZA REGISTRACIJU

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

4.1 Korišćenje aplikacije Ćelije Rukovanje radnim listovima... 32

DZM Aplikacija za servise

PREDMET: Odgovor na upit u postupku jednostavne nabave za predmet nabave Najam multifunkcijskih fotokopirnih uređaja, Evidencijski broj nabave 10/18

OSNOVI PRIMENE RAČUNARA RASPORED U LETNJEM SEMESTRU Nedelja Datum Tema Prvi čas - Uvod

UPUTSTVO. za ruter TP-LINK TD-854W/ TD-W8951NB

MICROSOFT WORD. Word pokrećete iz START - PROGRAMS menija ili klikom na prečicu na desktopu. Ruler / Lenjir. Tekstualni kursor.

MICROSOFT EXCEL SKRIPTA ZA INTERNU UPOTREBU

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

OSNOVI PRIMENE RAČUNARA PROGRAM NASTAVE U LETNJEM SEMESTRU

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

SKRIPTA ZA VEŽBE IZ PREDMETA ELEKTRONSKO POSLOVANJE

VBA moduli. mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice

KAKO GA TVORIMO? Tvorimo ga tako, da glagol postavimo v preteklik (past simple): 1. GLAGOL BITI - WAS / WERE TRDILNA OBLIKA:

OTVARANJE BAZE PODATAKA I IZRADA TABLICE U MICROSOFT ACCESS-u

Priprema podataka. NIKOLA MILIKIĆ URL:

UVOD. Uvod. Ključna pitanja: Koji objekti postoje u Toolbox-u? Koje metode Toolbox objekata postoje?

DEFINISANJE TURISTIČKE TRAŽNJE

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

CRNA GORA

Primer-1 Nacrtati deo lanca.

IZRADA TEHNIČKE DOKUMENTACIJE

Bear management in Croatia

Jelena Radić, Bane Popadić, Marko Gecić, Vladimir Milosavljević, Vladimir Popadić, Vladimir Rajs, Jovan Bajic Softverski praktikum

WELLNESS & SPA YOUR SERENITY IS OUR PRIORITY. VAŠ MIR JE NAŠ PRIORITET!

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

ANALIZA PRIMJENE KOGENERACIJE SA ORGANSKIM RANKINOVIM CIKLUSOM NA BIOMASU U BOLNICAMA

AUDIO-VIZUELNA SREDSTVA

PROGRAMIRANJE KROZ APLIKACIJE

Programiranje kroz aplikacije. Subprocedure Opseg promenljivih Excel VBA objektni model

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011.

MINISTRY OF THE SEA, TRANSPORT AND INFRASTRUCTURE

Transcription:

UNIVERZITET CRNE GORE ELEKTROTEHNIČKI FAKULTET- PODGORICA POSTDIPLOMSKE STUDIJE PRIMIJENJENOG RAČUNARSTVA Specijalistički rad Automatizovanje procedure izrade tenderske dokumentacije korišćenjem VBA MENTOR: Doc. dr Miloš Daković KANDIDAT Željko Pekić Br. ind. 1/08

Studije Primijenjenog Računarstva Broj Podgorica, 2009. godine Kandidat: Željko Pekić Broj indeksa: 1/08 Automatizovanje procedure izrade tenderske dokumentacije korišćenjem VBA Datum izdavanja rada: Mentor: Doc. dr Miloš Daković Datum predaje rada: Kandidat: Željko Pekić 2

IZJAVA O SAMOSTALNOM RADU Izjavljujem da sam ovaj specijalistički rad uradio samostalno, uz pomoć literature i mentora. Željko Pekić Rad odbranjen dana 2009. godine pred Komisijom u sastavu: (Predsjednik) (Mentor) (Član) Sa ocjenom ( ) 3

1. Sadržaj 1. Sadržaj...4 2. Uvod...5 3. VBA u MS Office aplikacijama...6 4. Postavka problema...9 5. Opis rješenja...9 6. Zaključak...31 4

2. Uvod Tema koju obrađujem u ovom projektu svog rada vezana je za olakšanje izrade tenderske dokumentacije, kao i njenoj automatizaciji u cilju rangiranja najbolje ponude. Istraživajući za ovaj Specijalistički rad, naišao sam na raznu literaturu i teorije koje se bave mojom temom, kako u užoj, tako i u široj vezi sa njom. Internet je bogat pregrštom raznih sadržaja, koji su mi pomogli da se približim zadatku, obradim i temeljno objasnim proceduru automatizovanja izrade tenderske dokumentacije. Naime, prvenstveno moramo objasniti sta je to u stvari tender i kako se sprovodi. Javni tender je metod nabavke robe ili usluga prikupljanjem ponuda od potencijalnih ponuđača javnim oglašavanjem u skladu sa definisanim uslovima. Kada se formira tenderska komisija, ona priprema potrebnu dokumentaciju, nakon čega slijedi javni poziv i prikupljanje ponuda. Tenderska komisija uzima u obzir sve ponude, ali prihvata samo one koje zadovoljavaju neke već unaprijed utvrđene zahtjeve. Kupac kada kupi tendersku dokumentaciju, potpisuje Ugovor o čuvanju povjerljivih informacija i daje određeni depozit. Ponuda za učešće na tenderu se podnosi direktno agenciji, a zatim agencija u roku od 30 dana razmatra ponude. U radu prevashodni zadatak mi je da objasnim proceduru automatizovanja tenderske dokumentacije. Postupak sam realizovao pomoću VBA (Visual Basic for Applications), koji je implementacija Microsoft-ovog programskog jezika VISUAL BASIC i pridruženo je integrisano razvojno okruženje (IDE), koje je ugrađeno u većini programa iz Microsoft Office. VBA je izuzetno fleksibilan i funkcionalno veoma bogat, ali ima nekih važnih ograničenja. VBA je vlasništvo Microsoft-a, i kao takav nije otvoren 5

standard. Nije potpuno kompatibilan sa novom verzijom Visual Basic-a, (VB.NET), dok je kompatibilan sa završnom verzijom Visual Basic 6. VBA programski jezik je zastupljen u gotovo svim MS Office aplikacijama, kao i u AutoCad-u, WordPerfect-u i Adobe Photoshop-u. 1 Specijalistički rad se sastoji od: uvodnog, teorijskog dijela i praktičnog dijela, koji je baziran od početka do kraja na objašnjavanju realizacije ove, meni, izuzetno zanimljive i korisne teme. 3. VBA u MS Office aplikacijama MS Word, MS Excel i slični programi smatraju se sredstvom za izvođenje standardnih kancelarijskih poslova i kao takvi široko su rasprostranjeni. Danas možda djeluje naivno, ali nekada je bilo značajno imati mogućnost da se, recimo, neki izveštaj poveže sa grafikom iz MS Excel-a koji prezentuje trenutne podatke koji se nalaze u Access bazi. Sve bi se to jednom pripremilo, a onda koristilo tako da od zahteva do rezultata na papiru prođe pet minuta. Danas neka slična rješenja vidimo čak i u javno publikovanim stranicama na internetu, a niko se ne čudi kako je to moguće da cijelo preduzeće ima na raspolaganju trenutne berzanske izvještaje ili kursnu listu. Nije bilo tako davno kada je takvo rješenje u malim informacionom sistemima bilo prosto nemoguće. Korišćenjem VBA, mogućnosti Office aplikacija se dodatno mogu proširiti tako da se i usko specijalizovani korisnički zahtjevi mogu automatizovati. Na primjer možete napraviti aplikaciju za pristup nekoj drugoj aplikaciji, tako da možete stvoriti, na primjer makro naredbu u MS Word-u koja pristupa MS Excel-u, Visio-u, AudoCAD-u, WordPerfect-u, ili drugim VBA- enable aplikacijama. VBA je izuzetno efikasan, krajnje ekonomičan i lak za učenje. Ekonomičan je u smislu vremena koje se uštedi korisćenjem VBA rješenja, a i na lakoću korišćenja dobijenog proizvoda. Naime, koju god Office aplikaciju da koristimo, postoje zadaci koje ponavljamo desetinama puta, kao sto su 1 Word 2007, Macros & VBA- Made EASY, Guy Hart-Davis [1] 6

kucanje i oblikovanje teksta ili pokretanje niza komandi korišćenjem menija i toolbar-ova. VBA nam omogućuje da iste rezultate dobijemo pritiskom na dugme i time možemo reći da je VBA veoma koristan za automatizaciju ponavljajućih radnji. Sve što treba da uradimo je da uđemo u VBA Editor, kreiramo modul i unesemo odgovarajući kod. Interesantno je napomenuti da za pisanje VBA koda nije neophodno veliko iskustvo u programiranju. Kao i kod svakog drugog programskog jezika, VBA makroi mogu biti kreirani sa nekom zlom namjerom. Korisnik koji pokreće bilo koji dokument koji sadrži VBA makro, može veoma lako doći u situaciju da makro izazove neželjene radnje. Krajnji korisnici se mogu zaštiti od napada i onemogućiti izvršavanje makroa, ako ne namjeravaju da koristie VBA programiranje. Interesantno je napomenuti da je zabrana izvršavanja makro-a standardno postavljena pri instalaciji paketa MS Office. Da bismo omogućili izvršavanje VBA makroa, prvo je potrebno da sigurnost aplikacije spustimo na najmanji nivo, i to sa tools/makro/security/low. VBA makro moze biti startovan manuelno (tasterska kombinacija <ALT>+F8), možemo ga pridružiti nekog dugmetu, nekoj stavci menija, lijevom ili desnom kliku, ali postoji i način kada se makro startuje automatski, na primjer pokretanjem ili zatvaranjem toga fajla za koga je taj makro i napravljen. Makro počinje sa naredbom "sub ime_makroa()", a završava se "end sub". Sve ono sto je između se naziva tijelo makroa, tj. naredbe pisane u VBA programskom jeziku. Do VBA koda nekoga makroa možemo doci na dva načina, Jedan od načina je korišćenjem menija Tools/Makro/Visual basic editor, a mozemo i pomoću prečice <ALT>+F11. Dobijamo prozor koji je prikazan na slici 1, i tu razlikujemo Project Explorer, Properties Window i Code Window. 7

Silka 1. VBA programsko okruženje Nakon otvaranja Visual Basic Editora direktno, koristimo Project Explorer prozor za navigaciju kroz makroe i korisničke obrasce. Project Explorer prozor funkcioniše kao standardno Windows Explorer stablo. Zavisno od aplikacije koja se koristi, dobićemo različite projekte u stablu. 2 U Properties prozoru Visual Basic Editor-a se mogu podgledati i izmijeniti svojstva nekog objekta u VBA, kao što je projekt, modul ili modul klase, korisnikov obrazac, ili kontrole (na primjer, dugme ili check box u dialog boxu). U padajućem meniju, na vrhu Properties prozora omogućen je izbor objekta čija svojstva želite pregledati ili izmijeniti. U Visual Basic Editor-u većinu rada za stvaranje i uređivanje VBA makroa radimo baš u Code prozoru. Visual Basic Editor omogućava otvaranje vise makroa unutar jednog modula, i u Code prozoru se nalazi text naših makroa. 2 Mastering, Microsoft VBA 2nd Edition, Guy Hart-Davis [2] 8

4. Postavka problema U poslednjem koraku procedure javnih nabavki potrebno je ispuniti propisane obrasce i zapisnike. Radi se o dokumentima sa velikim brojem tabela u koje se upisuju podaci, pri čemu se jedan podatak upisuje na više mjesta. Manuelno popunjavanje tabela je zamoran i dugotrajan posao, podložan greškama. U ovom specijalističkom radu je opisano moguće rješenje automatskog popunjavanja obrazaca korišćenjem VBA programiranja. Posmatran je tender koji je realizovan na ETF-u i na osnovu njega su izvedeni sledeći zaključci: 1. Tender se sastoji od pojedinačnih partija. 2. Za svaku partiju ponuđači mogu dostaviti ponudu sa detaljima ponude, cijenom i PDV-om. 3. Tenderska komisija razmatra pojedinačne ponude i konstatuje postojanje eventualnih većih ili manjih nedostataka. 4. Na kraju se svaka ponuda vrednije prema kriterijuma navedenim u tenderskoj dokumentaciji, pri čemu se najčešće koriste dva kriterijuma: ponuđena i rok isporuke. 5. Na kraju se dobijenim podacima popunjavaju dokumenti: Obrazac1, Obrazac2 i Zapisnik o vrednovanju ponuda. Cilj ovog specijalističkog rada je automatizovanje stavke broj 5. 5. Opis rješenja Prvi korak je prikupljanje potrebnih podataka. Ovdje je iskorišćen MS Excel tako što je kreiran dokument Tender.xls sa svim potrebnim podacima za ispunjavanje obrazaca. Primjer sadržaja fajla Tender.xls je prikazan na slici 2. Fajl se sastoji iz dva radna lista. U radnom listu "Tender" upisana je 9

informacija o broju partija, dok su u radnom listu "Podaci" upisani podaci svakog ponuđača za svaku partiju (broj partije, naziv ponuđača, bez PDV-a, PDV, ukupna, veći i manji propusti, i na kraju kriterijum koji se odnosi na ponuđenu cijenu i rok isporuke). Radni list "Podaci" Radni list "Tender" Slika 2. Sadržaj fajla Tender.xls Naredni korak je analiza tabela koje se popunjavaju i kreiranje MS Word dokumenta Sabloni.doc koji sadrži nepopunjene primjerke svih potrebnih tabela. Svaka tabela je obilježena Bookmark-om kako bi se na lak način mogla identifikovati. U nastavku je dat izgled dokumenta Sabloni.doc. Tabela 1. Ova tabela mora imati Bookmark "Tab1S" B r Ime ponuđača Veći propusti čija je posljedica odbacivanje (opisati ) Valuta Vrijednost Ukupna vrijednost većih propusta Tabela 2. Ova tabela mora imati Bookmark "Tab2S" 10

Br Ime ponuđača Manji propust ( opisati) Valuta Vrijednost Ukupna vrijednost manjih propusta Tabela 3. Ova tabela mora imati Bookmark "Tab3S" A B C D =B±C manji Br Ime ponuđača Korigovana Valuta Cijena ugovora propusti Ugovora (+ ili -) Tabela 4. Ova tabela mora imati Bookmark "Tab4S" A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka B r Ime ponuđača Valuta koja se kvantifikuje Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta Tabela 5. Ova tabela mora imati Bookmark "Tab5S" A I J K= I +J Br Ime ponuđača Valuta Prilagođena bez popusta Popusti Ukupno prilagođena Tabela 6. Ova tabela mora imati Bookmark "Tab6S" Br Imena ponuđača K Ukupno prilagođena L Rang Tabela 7. Ova tabela mora imati Bookmark "Tab7S" Rangiranje po silaznom redosljedu Naziv ponuđača K Ukupno prilagođena 11

Tabela 8. Ova tabela mora imati Bookmark "Tab8S" R.b r PODKRITERIJUMI MAKSIMALAN BROJ BODOVA Ime ponuđača podkriterijum br.1 Ponuđena Dodijeljeni broj bodova podkriterijum br.2 Rok isporuke Dodijeljeni broj bodova UKUPNO Tabela9. Ova tabela mora imati Bookmarks "Tab9S" SILAZNI REDOSLJED IME PONUĐAČA Poeni dobijeni vrednovanjem ponuda po kriterijumima i podkriterijumima Tabela10. Ova tabela mora imati Bookmarks "Tab10S" UKUPNA CIJENA (bez PDV-a) UKUPAN PDV (7%) UKUPNA CIJENA sa PDVom Tabela11. Ova tabela mora imati Bookmarks "Tab11S" PONUĐAČ 1. PONUĐENA CIJENA 2. ROK ISPORUKE UKUPAN BROJ BODOVA U MS Word fajlu Sabloni.doc imamo tabelu, koju treba da iskopiramo u dokument Obrazac1. Uzećemo kao primjer Tabelu 4 koja se može iskopirati na dva načina, da uđemo u dokument i ukucamo table(1).copy, a možemo i na drugi način, sa kojim je upravo ovdje i rađeno, preko bookmark. Ovaj postupak moramo ponoviti za svaku tabelu pojedinačno. 12

B r Ime ponuđača A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka koja se kvantifikuje Valuta Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta Tabela 4. Ova tabela mora imati Bookmark "Tab4S" Datu tabelu je potrebno selektovati (Slika 3.) i pridružiti je bookmarku Tab4S (Slika 4.). Za to su korišćene sledeće naredbe: Insert/ Bookmark/ Tab4S/ Add. Slika 3. Selektovanje tabele 13

Slika 4. Dodavanje bookmark Tab4S prethodno selektovanoj tabeli Sledeći korak je automatizacija pojedinačnih obrazaca. Ovdje počinjemo sa korišćenjem VBA programiranja. Počeću sa objašnjenjem makroa iz MS Word fajla Obrazac1.doc, baš kako sam ih i ja radio. On sadrži šest makroa. Ići ću redom i pokušati da pojasnim korake u rješavanju problema kroz obrazloženje VBA koda. Prvi makro koji sam napravio, odnosi se na upis podataka iz MS Excel u MS Word, automatizovanje podataka iz MS Excel-a direktno u MS Word tabele. U ovom makrou se obrađuju manji i veći propusti navedeni u odgovarajućim kolonama fajla Tender.xls. Prvi problem sa kojim sam se susreo jeste kako da postavim kursor na mjesto u dokumentu gdje želim da se upisuju podaci. To sam riješio uz pomoć Bookmark naredbe. Sa MS Word-ovim bookmark-om možemo označiti lokaciju unutar MS Word dokumenta ili čak dio teksta unutar dokumenta. Jednom označena, može se koristiti da označi lokaciju unutar dokumenta ili čak komad teksta unutar dokumenta. MS Word ima dvije vrste oznaka (bookmark) i svaki ima svoju vlastitu vrstu prikaza. Jedan izgleda kao oznaka velikog slova I, prikazan na slici ispod, vidjet ćete da je 14

umetnuta jedna oznaka unutar prvih linija uzorka teksta. Drugi tip double ili obavijena oznaka. Ova oznaka izgleda kao dve zagrade oko teksta koji je označen. Kada je tekst obavijen u bookmark-u, sve između početka i završetka zagrada bilježi se kao sadržaj bookmark-a. Na slici ispod možete vidjeti ovu drugu oznaku oko nekoliko riječi u trećem redu. Da biste umetnuli jednu oznaku, vaš kursor ili selekcija treba biti na poziciji na kojoj želite umetnuti bookmark. Da ga pokrenete potrebno je da korišćenjem menija otvorite dijaloški prozor za bookmark(insert/bookmark) ili moguća je i tasterska kombinacija <ALT>+ I, K. Oznaka mora biti jedna, samo jedna riječ. Ako želite dodati opisno ime, možete koristiti miješana slova, kao što su: MojePrvoBookmarkIme. Oznake imena mogu biti najviše do 40 znakova. U dijaloškom prozoru, potrebno je samo da upišete naziv koji želite za taj bookmark i kliknete na dugme Add. Unutar jednog dokumenta možete dodati više od 16.000 bookmark, tako da ne morate brinuti o tome koliko ste ih stavili. Kada imate bookmark u dokumentu, možete stvoriti hiperlink do neke informacije. Ispisano je ukratko samo par redova o bookmark-u, on svakako zaslužuje mnogo više, ali kao i za svaku MS Word-ovu naredbu, imamo help (tastersko dugme <F1>), pa u njemu možemo otkriti detaljno uz ponuđene primjere kako se koristi i vidjeti njegove oznake. U prvom primjeru bookmark Tab1S je tabela koju je potrebno iskopirati, dok je Tab1 pozicija gdje treba da se ovaj prvi makro izvrši. Isto važi i za sve ostale primjere, samo se mijenja redni broj tabele. Kod većih propusta karakteristično je da se makro realizuje na taj nacin što ako je u ćeliji opisa propusta upisana neka zamjerka, u koloni Vrijednost se upisuje NEMA, dok se u koloni ukupnih vrijednosti većih propusta upisuje ODBACUJE SE. Drugi slučaj je ako u ćeliji opisa većih propusta nemamo ništa upisano. Tada se u koloni vrijednost upisuje 0, kao i u koloni za ukupnu vrijednost većih propusta. Ovu proceduru treba ponoviti za svaku 15

partiju. Ukoliko za neku partiju nije bilo ponuđača umjesto tabele sa podacima potrebno je upisati tekst NEMA PONUDA. Obrada manjih propusta funkcioniše na sličan način s tim što se ponuda ne odbacuje ukoliko postoje manji propusti. U nastavku se nalazi kod sa rednim brojevima i opis svake linija tog koda. 1. Sub m1_veci_i_manji_propusti() 2. Propusti "Tab1S", "Tab1", 6 3. Propusti "Tab2S", "Tab2", 7 4. End Sub 5. Sub Propusti(b1, b2, k1) 6. Dim sablon As Document, d As Document 7. Dim xd As Excel.Workbook 8. Dim ws As Excel.Worksheet 9. Dim tb As Table 10. Dim s As String 11. Set d = ActiveDocument 12. Set xd = Workbooks.Open(d.Path & "\Tender.xls", 0, True) 13. Set ws = xd.worksheets("podaci") 14. BP = xd.worksheets("tender").cells(1, 2) 15. Set sablon = Documents.Open(d.Path & "\Sabloni.doc") 16. sablon.bookmarks(b1).select 17. Selection.Copy 18. d.activate 19. d.bookmarks(b2).range.select 20. For partija = 1 To BP 21. Selection.Collapse wdcollapseend 22. Selection.InsertParagraphAfter 23. Selection.InsertAfter "PARTIJA " & partija & ":" 24. Selection.Collapse wdcollapseend 25. Selection.Paste 26. Set tb = Selection.Tables(1) 27. k = 2 28. br = 0 29. Do While ws.cells(k, 1) > 0 30. If ws.cells(k, 1) = partija Then 31. br = br + 1 32. If br > 1 Then tb.rows.add 33. tb.cell(br + 1, 1).Range = br 34. tb.cell(br + 1, 2).Range = ws.cells(k, 2) 35. s = ws.cells(k, k1) 16

36. tb.cell(br + 1, 3).Range = s 37. tb.cell(br + 1, 4).Range = " " 38. If Len(s) > 1 And k1 = 6 Then 39. tb.cell(br + 1, 5).Range = "Nema" 40. tb.cell(br + 1, 6).Range = "Odbacuje se" 41. Else 42. tb.cell(br + 1, 5).Range = "0" 43. tb.cell(br + 1, 6).Range = "0" 44. End If 45. End If 46. k = k + 1 47. Loop 48. tb.select 49. If br = 0 Then 50. tb.delete 51. Selection.InsertAfter vbtab & "Nema ponuda." 52. Selection.InsertParagraphAfter 53. End If 54. Selection.Collapse wdcollapseend 55. Next 56. xd.close 57. sablon.close 58. End Sub Linija1. Deklariše se makro sa imenom m1_veci_i_manji_propusti, a linija4 je kraj makra. Linija2. Pokreće makro "Propusti", iskopira dio dokumenta Sabloni.doc obilježen bookmark-om "Tab1S", i nalijepi na mjesto obilježeno bookmarkom "Tab1" u dokumentu Obrazac1.doc. Broj 6 je broj kolone MS Excel dokumenta u kojoj su navedeni VEĆI PROPUSTI. Procedura se ponavlja onoliko puta koliko imamo partija u tenderu. Linija3. Pokreće makro "Propusti", koristi se bookmark "Tab2S" (Sabloni.doc), i bookmark "Tab2" (Obrazac1.doc) da bi se formirale tabele manjih propusta za svaku partiju. Broj 7 je broj kolone MS Excel dokumenta u kojoj su navedeni MANJI PROPUSTI Linija5. Deklariše se makro Propusti, koji ima 3 ulazne promjenljive. Makro se završava linijom58. Linija6. Deklarišemo dve promjenljive sablon i d, tipa dokument 17

Linija7. Deklarišemo promjenljivu xd, tipa Excel.Workbook Linija8. Deklarišemo promjenljivu ws, tipa Excel.Worksheet Linija9. Deklarišemo promjenljivu tb, tipa Table Linija10. Deklarišemo promjenljivu s, tipa String Linija11. Setujemo promjenljivu d, da predstavlja aktivni dokument (Obrazac1) Linija12. Otvaramo MS Excel fajl Tender.xls iz koga treba da izvlačimo podatke (postavili smo Read-Only nad fajlom). Njega pridružujemo promjenljivoj xd. Linija13. Setujemo promjenljjivu ws, radni list "Podaci" iz Tender.xls Linija14. BP izjednačimo sa brojem partija koji očitavamo sa radnog lista "Tender", iz ćelije B1 (1. red,2. kolona) Linija15. Otvaramo MS Word fajl Sabloni.doc iz koga treba da izvlačimo šablone tabela i pridružujemo ga promjenljivoj sablon Linija16. Selektujemo bookmarks naveden kao prvi ulazni argument makroa (b1) iz MS Word dokumenta Salboni.doc Linija17. Iskopiramo ono što smo u prethodnom koraku selektovali Linija18. Aktiviramo dokument Obrazac1 (vratimo se na njega) Linija19. Selektujemo bookmark naveden kao drugi ulazni argument makroa (b2) u dokumentu Obrazac1 Linija20. For petlja koja broj partija mijenja od 1 do BP, a linija55 sa naredbom NEXT prelazi na sledeću partiju Linija21. Postavljamo kursor na kraj selekcije Linija22. Prelazimo na sledeći paragraf Linija23. Unesemo text PARTIJA i zatim broj partije (brojačka promjenljiva For petlje) Linija24. Postavljamo kursor na kraj selekcije Linija25. Nalijepimo iskopiranu tabelu (kopiranu linijom17 iz dokumenta Sabloni.doc) 18

Linija26. Setujemo promjenljjivu tb, tako da pokazuje na prethodno nalijepljenu tabelu Linija27. K izjednačimo sa 2, jer se u MS Excel fajlu Tender.xls podaci nalaze od drugog reda (prvi red je zaglavlje MS Excel tabele) Linija28. Promjenljiva br je brojač, kojom određujemo broj ponuđaca iz neke partije Linija29. Sve dokle je iz radnog lista "Podaci" vrijednost ćelije (k,1) veca od 0 idi dalje, a linija47 vraća naredbom LOOP ponovo na ovu provjeru iz linije29. Linija30. Ako je vrijednost ćelije (k,1) iz radnog lista "Podaci" jednaka promjenljivoj "partija", onda izvršavaj sledeće redove, a ako nije, pređi odmah iza linije45. Linija31. Promjenljivu br koja je brojač, odmah povećavamo za jedan, jer smo našli ponuđaca u partiji Linija32. Ako je vrijednost brojača veća od jedinice, onda dodajemo novi red u tabeli (uočite da sve tabele u dokumentu Sabloni.doc imaju jedan prazan red) Linija33, 34, 35, 36, 37 su linije koje služe da sa tačno odabranim vrijednostima iz Tender.xls ispunimo ćelije u tabeli Linija38. Ako je dužina promjenljive S veća od 1 i k1 jednako 6, onda izvršavaj sledeće redove, a ako nije, pređi odmah iza linije44. Ovim provjeravamo da li je bilo većih propusta. Linija39 i linija40 su linije koje služe da se tačno odabranim vrijednostima ispunimo celije u tabeli, ako je uslov iz linije63 tačan, odnosno ukoliko je bilo većih propusta (tada se ponuda odbacuje) Linija41. Sa ovom linijom i naredbom ELSE postižemo sledeće. Ako uslov iz linije38 nije tačan, onda će se izvršiti sve ispod ove linije. Linija42 i linija43. Ako uslov iz linije38 nije tačan, onda će se izvršiti dvije linije ispod, i tabela ispuniti tačno određenim vrijednostima, odnosno ukoliko nije bilo većih propusta (tada će ponuda biti prihvaćena) Linija46. Povećavamo vrijednost promjenljive k za jedan, tj. nastavljamo potragu za sledećim ponuđačem. Linija48. Sa ovom linijom smo selektovali tabelu 19

Linija49. Kada je promjenljiva br=0 (imena ponuda za posmatranu partiju), onda izvrši sledeće redove (obrisati tabelu i uneti da nemamo ponuđača), a ako nije odmah prelazimo iza linije53. Linija50. Brišemo selektovanu tabelu Linija51. Pređemo za jedan tab i ispišemo "Nema ponuda." Linija52. Prelazimo na sledeći paragraf Linija54. Postavljamo kursor na kraju selekcije Linija56. Zatvaramo MS Excel fajl Tender.xls Linija57. Zatvaramo MS Word fajl Sabloni.doc Zbog sličnosti između makroa, neću navoditi kompletan kod i za ostale makroe, već samo njihovu razliku u odnosu na prvi makro, za koga sam izveo linijsko objašnjenje. 20

Drugi makro se odnosi na vrednovanje manjih propusta, tabela je malo različita, i na to svakako trebamo obratiti pažnju kada pišemo kod, i tu se jedino i razlikuje ovaj kod u odnosu na prvi makro. Obratimo pažnju na linije od 33 do 44 iz prvoga makroa. Taj dio koda služi za upis vrednosti iz određenih ćelija iz MS Excel-a u određene ćelije u tabeli u MS Word-u. U ovom makrou taj dio je zamijenjen sa: tb.cell(br + 2, 1).Range = br tb.cell(br + 2, 2).Range = ws.cells(k, 2) tb.cell(br + 2, 3).Range = " " tb.cell(br + 2, 4).Range = ws.cells(k, 5) tb.cell(br + 2, 5).Range = "0" tb.cell(br + 2, 6).Range = ws.cells(k, 5) Potrebno je naglasiti da zaglavlje tabele u prvom makrou ima samo jedan red tako da se podatak sa rednim brojem br upisuje u br+1. red tabele, dok u drugom slučaju zaglavlje tabele ima dva reda, pa se podatak sa rednim brojem br upisuje u br+2. red tabele. U ovom makrou za kopiranje tabele je korišćen je bookmark Tab3S, a za poziciju gdje se treba umetnuti tabele (za svaku partiju po jednu) je iskorišćen Tab3. Treći makro se odnosi na kvantifikaciju. Ponovo malo drugačija tabela, ali isti zadatak i u istom opsegu se razlikuje kod makroa u odnosu na prvi i drugi makro (linija33- linija44): tb.cell(br + 4, 1).Range = br tb.cell(br + 4, 2).Range = ws.cells(k, 2) tb.cell(br + 4, 3).Range = " " tb.cell(br + 4, 4).Range = ws.cells(k, 5) tb.cell(br + 4, 5).Range = "--" tb.cell(br + 4, 6).Range = "--" tb.cell(br + 4, 7).Range = ws.cells(k, 5) tb.cell(br + 4, 8).Range = "--" tb.cell(br + 4, 9).Range = ws.cells(k, 5) 21

Kao što odmah možemo primjetiti, ovde unos u tabeli počinje od petoga reda (br=1, br+4=5). U trećem makrou za kopiranje tabele je korišćen je bookmark Tab4S, a za poziciju gdje se treba izvršiti makro je iskorišćen Tab4. Funkcionisanje ovog makroa će biti objašnjeno na primjeru: Izgled fajla Tender.xls U MS Word fajlu Obrazac1.doc bi trebalo prvo da odredimo poziciju gdje će se dati makro izvršiti (Slika 5.). To određujemo sa bookmar-om, na primjer bookmark dodijelimo naziv Tab4, prikazano na slici 6. Komande za dodavanje bookmark-a su: Insert/ Bookmark/ Tab4/ Add. 22

Slika 5. Postavimo kursor na poziciju gdje želimo da počne izvršavanje makroa Slika 6. Zatim toj poziciji u dokumentu dodijelimo bookmark Tab4 Kada je određena pozicija gdje dati makro treba da se izvrši, preostalo je još samo da ga izvršimo. To možemo trenutno na dva načina. Prvi je pomoću dugmeta u toolbaru, otvara se forma, čiji je izgled prikazan na slici 7. Drugi način je startovanje tasterskom prečicom <ALT>+F8. 23

Slika 7. Na slici je dat izgled Forme Nakon izvršenja datog makroa, MS Word dokument Obrazac1 se popunjava sledećim tabelama: PARTIJA1: B r Ime ponuđača A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka koja se kvantifikuje Valuta Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta 1 Kliford doo 1284 -- -- 1284 -- 1284 2 Elite doo 1230.5 -- -- 1230.5 -- 1230.5 3 Acme doo 1177 -- -- 1177 -- 1177 4 Ajax doo 1070 -- -- 1070 -- 1070 24

PARTIJA2: B r Ime ponuđača A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka koja se kvantifikuje Valuta Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta 1 Elite doo 1413.47 -- -- 1413.47 -- 1413.47 2 Ajax doo 1326.8 -- -- 1326.8 -- 1326.8 3 Kliford doo 1188.77 -- -- 1188.77 -- 1188.77 PARTIJA3: B r Ime ponuđača A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka koja se kvantifikuje Valuta Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta 1 Kliford doo 1412.4 -- -- 1412.4 -- 1412.4 2 Acme doo 1214.45 -- -- 1214.45 -- 1214.45 3 Ajax doo 1214.45 -- -- 1214.45 -- 1214.45 4 Elite doo 1214.45 -- -- 1214.45 -- 1214.45 PARTIJA 4: PARTIJA5: B r Nema ponuda. Ime ponuđača A D E F G=D- F H I = G+H KVANTIFIKACIJA Ponuđena stavka koja se kvantifikuje Valuta Korigovana ugovora Stavka (opisati) Iznos u Ponudi Korigovana ugovora umanjena za stavke koje se kvantifikuju Prosječna stavki iz ostalih ponuda Prilagodjena bez popusta 1 Ajax doo 1380.3 -- -- 1380.3 -- 1380.3 2 Kliford doo 1070 -- -- 1070 -- 1070 25

Popunjavanje počinje od petoga reda, i to naravno, ako imamo ponuđača. U prvoj ćeliji petoga reda ćemo upisati broj partije, ćelija A u MS Excel-u. U drugoj ćeliji ćemo upisati naziv ponuđača, odnosno u MS Excel ćelija B. U trećoj ćeliji ćemo upisati oznaku za euro. U četvrtoj, sedmoj i devetoj ćeliji ćemo unijeti ukupnu cijenu sa pdv-om, ćelija E u MS Excel-u.U petoj, šestoj i osmoj ćeliji ćemo upisati crtice "--". Četvrti makro se odnosi na primjenu propusta. Tabela je kao i u svakom makrou drugačija. U ovom slučaju upis u tabelu počinje od trećeg reda, što znači da je za red korišćen br+2. Za kopiranje tabele je korišćen bookmark Tab5S, a za pozicioniranje izvršavanja datog makroa korišćen bookmars Tab5. Upis u tabelu je opisan sledećim kodom: tb.cell(br + 2, 1).Range = br tb.cell(br + 2, 2).Range = ws.cells(k, 2) tb.cell(br + 2, 3).Range = " " tb.cell(br + 2, 4).Range = ws.cells(k, 5) tb.cell(br + 2, 5).Range = "Nema" tb.cell(br + 2, 6).Range = ws.cells(k, 5) Peti makro se odnosi na određivanje najniže obračunske cijene, i to rangiranjem. Kao bookmarks je za tabelu iz Sabloni.doc korišćen Tab6S, a za poziciju gdje treba peti makro izvršiti bookmarks Tab6. Za ovaj makro sam izdvojio baš dosta vremena, i nisam mogao doći do konkretnog rješenja kako bih izvršio rangiranje. Ali sam zato odradio ostalu popunu ove tabele. Kod se takođe, kao i u prethodnom primjeru, razlikuje u istom dijelu: tb.cell(br + 2, 1).Range = br tb.cell(br + 2, 2).Range = ws.cells(k, 2) tb.cell(br + 2, 3).Range = ws.cells(k, 5) tb.cell(br + 2, 4).Range = " " 26

Šesti makro se odnosi na rangiranje po silaznom redosljedu, odnosno sortiranje. Taj problem sam riješio tako što sam izvršio sortiranje direktno u MS Excel-u i poređao ih po rednim brojevima, što je i bio cilj ovoga makroa. Za kopiranje tabele je korišćen Tab7S, a za pozicioniranje mjesta izvršenja ovoga makroa bookmar Tab7. Kod za upis u tabelu je: tb.cell(br + 2, 1).Range = br tb.cell(br + 2, 2).Range = ws.cells(k, 2) tb.cell(br + 2, 3).Range = ws.cells(k, 5) Sortiranje makroa sam izvršio tako što sam prije uzimanja podataka iz MS Excel-a ušao u njega i izvršio sortiranje, i to u rastućem redosljedu po partijama i po ma. Kod koji sam iskoristio za sortiranje je: ws.cells.sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _ E2"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase _ xd.save :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal Takođe sam morao da skinem zaštitu (read only) nad ovim MS Excel fajlom, linija15. Set xd = Workbooks.Open(d.Path & "\Tender.xls") 27

Slijedi drugi work fajl Obrazac2.doc i u njemu se nalaze sedmi i osmi makro, čije ću kodove takođe pokušati da pojasnim. Sedmi makro se odnosi na ekonomski najpovoljniju ponudu. Za kopiranje tabele iz sablona koriščen je bookmarks Tab8S, dok je za pozicioniranje mjesta izvršenja ovoga makroa korišćen bookmark Tab8. Imamo odnos ponuđenih i izdvajanje maximalnog broja bodova. Kod za odnos ponuđenih se takođe nalazi gdje i kod za unos u tabelama iz prethodnih zadataka: tb.cell(br + 3, 1).Range = br tb.cell(br + 3, 2).Range = ws.cells(k, 2) tb.cell(br + 3, 3).Range = ws.cells(k, 8) tb.cell(br + 3, 4).Range = ws.cells(k, 9) tb.cell(br + 3, 5).Range = ws.cells(k, 10) Za izdvajanje maksimalnog broja bodova trebamo ispitati da li je broj bodova prethodnog ponuđača manji od broja bodova trenutnog ponuđača, i ako jeste, stavi da maximalnan broj bude baš taj trenutni: If ws.cells(k - 1, 8) < ws.cells(k, 8) Then tb.cell(2, 3).Range = ws.cells(k, 8) tb.cell(2, 4).Range = ws.cells(k, 9) tb.cell(2, 5).Range = ws.cells(k, 10) End If 28

Osmi makro se odnosi na silazni redosljed ponuda po kriterijumima i podkriterijumima. Za kopiranje tabele iz sablona koriščen je bookmarks Tab9S, dok je za pozicioniranje mjesta izvršenja ovoga makroa korišćen bookmark Tab9. Sortiranje makroa sam izvršio tako što sam prije uzimanja podataka iz MS Excel-a ušao u njega i izvršio sortiranje, i to u rastućem redosljedu po partijama, a u opadajućem redosljedu kada su ukupni bodovi u pitanju. Kod koji sam iskoristio za sortiranje je: 3 ws.cells.sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range( _ "J2"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase _ xd.save :=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, _ DataOption2:=xlSortNormal Kod za unos silaznog redosljeda ponuda po kriterijumima u MS Word tabelama se nalazi na istim pozicijama kao i u svakom makrou, a kod izgleda ovako: tb.cell(br + 1, 1).Range = br tb.cell(br + 1, 2).Range = ws.cells(k, 2) tb.cell(br + 3, 3).Range = ws.cells(k, 10) U trećem MS Word fajlu Zapisnik o vrednovanju ponuda.doc se nalaze deveti i deseti makro, čije ću kodove takođe pokušati da vam pojasnim. 3 Excel 2007, Power Programming with VBA, John Walkenbach & Sons [3] 29

Deveti makro se odnosi na cijene ponuda, za svakog ponuđača odvojeno. Za kopiranje tabele iz sablona koriščen je bookmarks Tab10S, dok je za pozicioniranje mjesta izvršenja ovoga makroa korišćen bookmark Tab10. Ovaj kod se razlikuje od prethoduh osam u tome što je u ovome tabela trebala da se nalijepi za svakoga ponuđača posebno, naravno, ako tog ponuđača ima. To sam postigao tako što sam samu tabelu nalijepio zajedno sa vrijednostima u tabelama. Uklonio sam liniju50 iz koda, jer nema dodavanja redova tabela i od linije33 do linije55 unet je dati kod: Selection.Collapse wdcollapseend Selection.InsertParagraphAfter Selection.InsertAfter "Cijena ponude je pod rednim brojem " & br & ", ponudac: " & ws.cells(k, 2) Selection.Collapse wdcollapseend Selection.Paste Set tb = Selection.Tables(1) tb.cell(2, 1).Range = ws.cells(k, 3) tb.cell(2, 2).Range = ws.cells(k, 4) tb.cell(2, 3).Range = ws.cells(k, 5) Isto tako, kasnije u kodu, kada je br=1, nemamo brisanje tabele, jer tabelu unosimo u samom kodu ako je uslov zadovoljen, i liniju82 ćemo morati da uklonimo ili stavimo kao komentar na nju. Deseti makro se odnosi na komparativni prikaz ocjene i analiza ponuda. Tabela je data u malo drugačijem obliku, nije kao u prvih osam slučajeva. Razlika je u tome što se u ovoj tabeli unos ne vrši po redovima, već po kolonama, i samim tim za više od jednog ponuđača dodajemo kolonu, a ne red. Sve ostalo je isto. Za kopiranje tabele iz sablona korišćen je bookmarks Tab11S, dok je za pozicioniranje mjesta izvršenja ovoga makroa 30

korišćen bookmark Tab11. Kao što sam i rekao, liniju55, koja je služila za dodavanje reda, ako imamo više od jednog ponuđača u opticaju, sada trebamo prilagoditi da služi za dodavanje kolona i to ćemo postići tako što ćemo liniju55 zamijeniti sa sledećim kodom: If br > 1 Then tb.columns.add Kod za unos ocjena i analiza ponuda u MS Word tabelama se nalazi na istim pozicijama kao i u svakom makrou, a kod izgleda ovako: tb.cell(1, br + 1).Range = ws.cells(k, 2) tb.cell(2, br + 1).Range = ws.cells(k, 8) tb.cell(3, br + 1).Range = ws.cells(k, 9) tb.cell(4, br + 1).Range = ws.cells(k, 10) 6. Zaključak 31

U ovom radu posmatran je tender koji je realizovan na ETF-u i na osnovu njega su izvedeni zaključci koji predstavljaju srž ovog fenomena. Tender se sastoji od pojedinačnih partija; za svaku partiju ponuđači mogu dostaviti ponudu sa detaljima ponude; tenderska komisija razmatra ponude; svaka ponuda se na kraju vrednuje po ponuđenoj cijeni i roku isporuke isporuke, i na kraju se dobijenim podacima popunjavaju dokumenti. Dokumenti su Obrazac1, Obrazac2 i Zapisnik o vrednovanju ponuda. Cilj ovog specijalističkog rada jeste automatizovanje popunjavanja navedenih dokumenata. VBA programiranje je veoma korisno za automatizovanje tenderske dokumentacije, olakšava posao i u hodu ga obavljamo sa minimalnim trudom i ulaganjem, a greške gotovo da ne postoje ili su svedene na prihvatljiv minimum. Nadam se da sam uspio da vam približim moju temu i ovaj rad učinim razumljivim, kao i kodove donekle objasnim. Na vama je izbor, a moj izbor je svakako VBA programiranje!!!! 32

Literatura [1] Word 2007, Macros & VBA- Made EASY, Guy Hart-Davis [2] Mastering, Microsoft VBA 2nd Edition, Guy Hart-Davis [3] Excel 2007, Power Programming with VBA, John Walkenbach & Sons 33