Microsoft Office FrontPage
uređuje Dragan Grbić

Bookmark and Share
Matična strana sajta
  Novo na sajtu
  Mapa sajta
  Beleške
  Kontakt
  Pretraga MSKB

 Blog Praktikuma
  RSS feed
  P@W @Tw

  Izvezi stranicu u PDF
 
Office Praktikum

FrontPage Home
 


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

 
       

Sponzori sajta

SBB CS 1.6 game server: 82.117.200.1
 
Connectivity by SBB

 
Suština pasijansa
Suština pasijansa
 


 

Informacije

NOVOSTI

I još dva nova priloga o Excelu
Novi prilozi o Wordu
Novi i prilozi u temi "razno o Officeu"
Novi članci o novostima u Officeu 2010!

SADRŽAJI ZA PREUZIMANJE

Lokalizacija Total Commandera 7.51Obe jezičke školjke za popularni program na srpskom sad funkcionišu u bilo kojoj varijanti Windowsa!
RNDalica.ExcelDodatak za Excel 2007/2010 za generisanje slučajnih podataka!
YuConv.ExcelDodatak za Excel 2007/2010 za konverziju pisama!
YuConvNetDodatak za Word 2007/2010 za konverziju pisama i kodnih rasporeda!

SKREĆEMO PAŽNJU

Kako pretraživati MSKB
a pronaći ćete i još mnogo novih sadržaja...

KONTAKT

Da li znate za pravila koja važe pri kontaktu sa nama? Molimo vas da se obavestite o tome!
 
POZIVAMO VAS

i prenesite svoja iskustva. Najbolji prilozi će biti objavljeni.

  (C) 2000-2010 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-2011 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-2011; Valinor Design; sva prava pridržana.