Microsoft Office FrontPage
uređuje Dragan Grbić

 Office Praktikum | Mapa sajta 

 
Bookmark and Share
Matična strana sajta
Novo na sajtu
Mapa sajta
Beleške
Knjiga posetilaca
Kontakt

Prethodna stranica
Pretraga sajta
Pretraga MSKB

Blog Praktikuma
RSS feed 
 
Office Praktikum

FrontPage Home
 


Skoro svakodnevno slušamo
  Radio Paradise:
  eklektični muzički online radio bez reklama!
 

   

Sponzori sajta

  Connectivity by SBB
 
Connectivity by SBB

 

Informacije

NOVOSTI
Novi prilog o Wordu
Tri nova autorska članka
Četiri priloga o Accessu
Opis i uputstvo za alatku YuCirLat '08 (Word)

SADRŽAJ ZA PREUZIMANJE
YuCirLat '08 unapređena alatka za konverziju kodnih rasporeda u Wordu

SKREĆEMO PAŽNJU
Beleške: B(l)oga li ti tvoga!- prilog koji će nekog možda čak i da naljuti
Kako pretraživati MSKB
* a pronaći ćete i još mnogo novih sadržaja...

USKORO SERIJA ČLANAKA O OFFICEU 2010

POZIVAMO VAS
* i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.



  (C) 2000-2009 Praktikum na Webu
 

Muke sa VBA u Frontpageu

Nivo:  NIVO 3 - klinite za objašnjenje


FrontPage se pokazao kao tvrd orah u primeni VBA. Objektni model je prilično složen, a ponašanje koda je prilično teško razumeti. To je čista šteta, jer iskustvo nas uči da se sa malo mudrog programiranja mogu izvesti sjajne stvari koje štede vreme i lakše dovode do dobrih rezultata...

U barem nekoliko navrata, pokušao sam da primenim VBA u FrontPageu. I svaki put, bilo je bez uspeha. Najiritantnije je to što nema metoda za upravljanje opštim tekstom, niti je moguće upravljati radnom okolinom onako kako je to moguće u drugim Office programima. Na primer, obratite pažnju na izvorni kod mnogih stranica na Praktikumu: ključne reči unutar teksta označavam stilom listing (pogledajte izvorni kod ovog pasusa), čija definicija se čuva u CSS datoteci (nigde na sajtu, osim u dva-tri sporadična slučaja, nećete naći klauzule FONT ili FONT COLOR; pešice se menjaju samo definicije za podebljani i kurzivni ispis). Da bi se takva definicija izvela unutar običnog pasusa, koristi se klauzula <span class listing>neki tekst</span>. FrontPage ne obezbeđuje standardnu alatku za takav zahvat, pa sam namerio da napravim makro koji će u jednom potezu postaviti <SPAN> tagove oko označenog teksta.

I tako sam se prvi put uputio u FrontPage VBA... Bez uspeha. Osećao sam se kao da prvi put u životu vidim VBA. Objektni model programa je z... k-hm... slabo upotrebljiv za sitne stvari, a neophodni zahvati koje sam kasnije video u primerima uverili su me da ne treba gubiti previše vremena na zamlaćivanje. Na kraju, opet je ispalo da mi brzo snimljeni makro u trivijalnom eksternom editoru završava posao brže nego FrontPage...

Mnogo kasnije sam se vratio ovom pitanju, pa sam zavirio u Microsoft Knowledge Base i tamo naišao na neke zanimljive primere. Makroi koje vidite u prilozima su tek malo prevedeni, a suštinski nisu menjani. Ko zna, možda nekome i bude od koristi...

Dodavanje teksta iza nekog taga

Prvi makro prikazuje unos nekog teksta ili HTML koda kroz VBA na stranicu. Pretpostavka za ispravan rad makroa je da u matičnom folderu lokalne verzije sajta postoji datoteka primer.asp koja ne mora da bude otvorena pri pokretanju makroa. Makro će zatvoriti stranicu, a posle je možete sami ponovo otvoriti i proveriti rezultat.

Sub DodajHTML()
' dodaje tekst iza taga <BODY> na stranici
' Izvor priloga je MSKB članak Q238423

' deklarisanje promenljivih
Dim vbaDokument As FPHTMLDocument
Dim vbaDatoteka As WebFile
Dim vbaStranica As PageWindow
Dim vbaTag As IHTMLElement
Dim vbaTekst As String

' postavljanje objekta vbaDatoteka
' na datoteku primer.asp
Set vbaDatoteka = ActiveWeb.RootFolder.Files("primer.asp")

' vbaStranica postaje vbaDatoteka
' Koristi se metoda Edit da bi se promenio
' pogled u Normal u slučaju da je navedena
' datoteka otvorena.
' Režim pogleda normal je neophodan da bi se
' mogao uneti HTML kod direktno.
Set vbaStranica = vbaDatoteka.Edit(fpPageViewNormal)

' Neophodni manevar sa objektima
Set vbaDokument = vbaStranica.Document

' vbaTag se definiše kao prva instanca taga <body>
' U praksi, to može biti bilo kakav tag, pa i neki
' rezervisani, poput <tralala>, što možete
' unapred pripremiti
Set vbaTag = vbaDokument.all.tags("body").Item(0)

' vbaTekst je sadržaj koji ćemo uneti.
' To može biti bilo kakav ASCII tekst.
' Sami pazite na sintaksnu ispravnost sadržaja!
vbaTekst = "<b>Ovaj tekst je unet pomoću VBA procedure!</b>"

' Poziv metode insertAdjacentHTML.
' Pomoću te metode, tekst se unosi
' POSLE naznačenog mesta.
Call vbaTag.insertAdjacentHTML("AfterBegin", vbaTekst)

' Snimamo stranicu pod istim imenom
vbaStranica.SaveAs vbaStranica.Document.Url

' Zatvaramo stranicu. Metodi dodajemo
' klauzulu False da bismo izbegli zahtev
' za ponovnim snimanjem stranice.
vbaStranica.Close False

End Sub

Spisak stranica sajta

Drugi primer je već ozbiljniji i svakako primenljiviji u praksi: makro će napraviti spisak svih HTML stranica u lokalnoj verziji vašeg sajta.

Sub ListaStranica()
' Formira listu HTML datoteka na sajtu
' Izvor priloga je MSKB članak Q237672

' glavna procedura samo poziva radnu funkciju
DajIme ActiveWeb.RootFolder

End Sub


Function DajIme(vbaFolder As WebFolder) As Boolean

' Deklarisanje promenljivih
Dim vbaDatoteka As WebFile
Dim vbaSubFolder As WebFolder

' Ova petlja prolazi kroz sve datoteke
' u folderu označenom u promenljivoj vbaFolder
For Each vbaDatoteka In vbaFolder.Files
  ' odabir samo HTM datoteka
  If vbaDatoteka.Extension = "htm" Then
    'Ispis imena
    Debug.Print vbaFolder.Name & "\" & vbaDatoteka.Name
  End If
Next vbaDatoteka

' Sledi rekurzija koja prolazi
' kroz sve foldere sajta.
' Rekurzivni poziv znači
' da funkcija poziva samu sebe.
For Each vbaSubFolder In vbaFolder.Folders
  ' samo poziv funkcije
  DajIme vbaSubFolder
Next vbaSubFolder

' Funkcija mora da vrati vrednost,
' u ovom slučaju logičkog tipa.
' Dodeljujemo vrednost True
DajIme = True

' Na kraju je moguće dodati i kod
' koji proverava ovu vrednost
' i na osnovu nje obavlja posebne zadatke.
' U suštini,
' True označava da je funkcija izvršena uspešno.

End Function

Postoji još nekoliko zanimljivih primera primene VBA u FrontPageu, ali teško da bi se bilo koji od njih mogao nazvati ugodnim i lakim za razumevanje. Ako ste zainteresovani za dalje potrage, potražite na Webu dokumente u neposrednoj okolini dva MSKB članka čiji brojevi su navedeni u zaglavlju makroa.

 

  (C) 2000-2009 Praktikum na Webu

februar 2003.


 
 

Vrh stranice  Prethodna stranica  Naslovna strana  Mapa sajta  Pretraga

AFORIZAM ZA DANAS OVIH DANA SLUŠAMO...

Copyright © Praktikum na Webu, 2000-2009; Valinor Design; sva prava pridržana.