Autor
Pawe³ Bia³ka
specjalista ds. aplikacji i oprogramowania
Konsultant
Marcin Krawczak
konsultant w firmie TiMSI
(Tworzenie i Modernizacja Systemów Informatycznych)
Makra programowanie w Visual Basic M 02/001
ì
Gdzie znajdziecie gotowe, przydatne
w codziennej pracy makra?
M 02/003
ì
Od czego powinnicie zacz¹æ pisanie makra?
M 02/005
ì
Jak uruchomiæ napisane makro?
M 02/012
ì
Dlaczego powinnicie u¿ywaæ komentarzy?
M 02/007
ì
Co powinnicie zrobiæ, aby Wasze makro
by³o dostêpne we wszystkich dokumentach?
M 02/019
ì
Jak utworzyæ makro zamieniaj¹ce cyfry
na s³owa w dokumencie Excela?
M 02/006
W tym hale:
Dlaczego
powinnicie
przeczytaæ
to has³o?
Co to s¹
makra
i po co siê
je tworzy?
M 02/002
Makra programowanie w Visual Basic
Codziennie wykonujecie jakie d³ugotrwa³e ruty-
nowe operacje, na które tracicie mnóstwo czasu.
Czêsto nie mo¿ecie przyspieszyæ i uprociæ Wa-
szej pracy, korzystaj¹c z opcji dostêpnych w u¿y-
wanych przez Was aplikacjach nawet nagrywa-
j¹c makro. Rozwi¹zaniem jest napisanie w³asnego
makra w jêzyku VBA. Jak to zrobiæ, dowiecie siê
z tego has³a.
Makro jest zapisanym przez u¿ytkownika ci¹giem
operacji czêsto przez niego wykonywanych. Je¿eli
nie chcecie za ka¿dym razem powtarzaæ ca³ej se-
kwencji operacji (np. sortowania danych w arku-
szu Excela, wstawiania firmowych nag³ówków
w faksach tworzonych przy pomocy Worda), mo-
¿ecie raz napisaæ lub nagraæ makro, które bêdzie
potrafi³o zrobiæ dan¹ rzecz i zawsze, gdy zajdzie
potrzeba jej wykonania, po prostu je wywo³acie.
PROGRAMOWANIE W JÊZYKU VISUAL BASIC
Pisanie makr w Visual Basicu for Application
(w skrócie VBA), który jest jêzykiem programowa-
nia wbudowanym do aplikacji Microsoft Office
wymaga trochê wiedzy teoretycznej, ale za to daje
du¿o wiêksze mo¿liwoci ni¿ zwyk³e nagrywanie.
Nie wszystko, co mo¿na zrobiæ w Waszej aplikacji,
da siê nagraæ. Na przyk³ad, aby zaznaczyæ wszyst-
kie rysunki i co z nimi zrobiæ (choæby podpisaæ
i ponumerowaæ), musicie napisaæ makro w VBA
nie uda siê Wam nagraæ takiego makra.
Styczeñ 2002 (14)
Wiedza i Praktyka
Panel
Project
EDYTOR VISUAL BASIC
Aby zacz¹æ pisaæ makro, musicie uruchomiæ edy-
tor Visual Basic dla aplikacji.
" Z menu Narzêdzia (aplikacji, dla której chcecie
zrobiæ makro) wybierzcie Makro, a nastêpnie
z rozwijanego menu Edytor Visual Basic.
" Na ekranie zobaczycie okno edytora, które
dzieli siê na trzy czêci tak zwane panele.
W lewym górnym rogu znajduje siê panel Project.
Podobnie jak Eksplorator Windows wywietla on
elementy (otwarte projekty VBA) w formie drzewa.
Ka¿dy otwarty dokument i do³¹czony do niego
szablon nale¿¹ do osobnych projektów. W sk³ad
ka¿dego projektu wchodz¹: dokument, modu³
standardowy, modu³ klas, formularze, odwo³ania.
Makra programowanie w Visual Basic
M 02/003
Wiedza i Praktyka
Poradnik Komputerowy ©
Na stronie internetowej Poradnika Komputerowe-
go (www.poradnikkomputerowy.pl) znajdziecie
przydatne, gotowe do zaimportowania makra.
WSKAZÓWKA
Edytor Visual Basic mo¿ecie tak¿e otworzyæ, na-
ciskaj¹c kombinacjê klawiszy Alt-F11 (musicie
u¿yæ lewego klawisza Alt, gdy¿ prawy standar-
dowo s³u¿y do uzyskania polskich liter).
WSKAZÓWKA
M 02/004
Makra programowanie w Visual Basic
Modu³ standardowy (Modules) zawiera procedu-
ry ogólne (funkcje i podprogramy) mog¹ to byæ
makra zdefiniowane przez Was lub programy po-
mocnicze, z których korzystaj¹ inne programy. Tu-
taj w³anie bêd¹ siê znajdowaæ definicje wszyst-
kich makr, które stworzycie (nagrywaj¹c b¹d pi-
sz¹c w VBA). Modu³y klas, formularze i odwo³ania
dotycz¹ rzeczy, o których na razie nie bêdziemy
mówiæ programowanie obiektów MS Office jest
materia³em na osobny artyku³.
Funkcja jest wygodnym sposobem logicznego
wydzielenia pewnych dzia³añ programu, zamkniê-
cia ich w czarnej skrzynce. Najczêciej funkcja
dzia³a w ten sposób, ¿e dostaje na wejciu jakie
parametry, przetwarza je i zwraca wynik. Dziêki
Styczeñ 2002 (14)
Wiedza i Praktyka
Rys. 1. Edytor VBA
Panel
Properties
Panel Code
funkcjom nie musicie wiedzieæ, w jaki sposób co
zosta³o zrobione, wystarczy Wam wynik dzia³ania
funkcji, czyli co zosta³o zrobione. Przyk³adem
funkcji jest dodawanie: funkcja dodawania dostaje
kilka parametrów i zwraca sumê.
Podprogramy lub procedury dzia³aj¹ podobnie
jak w przypadku funkcji tylko procedura nie
zwraca wyniku.
W lewym dolnym rogu znajduje siê panel Proper-
ties, czyli W³aciwoci. Wywietlane s¹ tam w³aci-
woci edytowanego obiektu, jak np.: nazwa obiek-
tu, odleg³oæ miêdzy kolejnymi znakami tabulacji
(w punktach) DefaultTabStop, czy dokument zo-
sta³ sprawdzony pod wzglêdem poprawnoci gra-
matycznej GrammarChecked itp. Mo¿ecie te¿ je
tam zmieniæ. Jeli edytowanym obiektem jest mo-
du³ standardowy, to panel Properties zawiera tylko
nazwê modu³u (Name), która jest jego jedyn¹ w³a-
ciwoci¹.
Trzecim, najwiêkszym panelem jest Code, czyli
Edytor Kodu. Jest to najwiêksze na naszym rysun-
ku okno z rozwijanymi polami (General) i (De-
clarations). Wpisujecie tam treæ (kod) programu
w VBA.
PISANIE MAKRA
Przedstawiamy Wam dwa makra napisane w jêzy-
ku VBA, jedno dla Worda 2000 i jedno dla Excela
2000.
Makra programowanie w Visual Basic
M 02/005
Wiedza i Praktyka
Poradnik Komputerowy ©
Makro
dla Excela
M 02/006Makra programowanie w Visual Basic
¯eby zrobiæ Wasze makro musicie stworzyæ nowy
modu³:
" W tym celu nacinijcie drug¹ od lewej ikonê na
pasku narzêdzi i z rozwijanego menu wybierz-
cie Module. To samo uzyskacie, naciskaj¹c
w oknie Project prawy klawisz myszy i wybie-
raj¹c Insert/Module.
" Aby zmieniæ nazwê stworzonego modu³u, klik-
nijcie na niego i w panelu Properties w polu
Name zast¹pcie nazwê domyln¹ (np. Module1)
Wasz¹ w³asn¹ nazw¹.
" Teraz powinnicie zacz¹æ pisaæ Wasze makro.
Poni¿sze makro zamienia w arkuszu kalkulacyj-
nym Excela wszystkie cyfry na odpowiadaj¹ce im
s³owa np. 2 zostaje zamienione na Dwa, 173 na
JedenSiedemTrzy, k5 na kPiêæ, Zielona 2 na
Zielona Dwa.
Styczeñ 2002 (14)
Wiedza i Praktyka
Rys. 2. Polecenie: Module
" Na pocz¹tku wpiszcie:
" Nastêpnie wpiszcie nag³ówek procedury, czyli
nazwê Waszego nowego makra:
" Teraz musicie zadeklarowaæ zmienne u¿ywa-
ne w tym makrze. Pierwszy raz spotykacie typ
danych Range zmienne tego typu dotycz¹
komórek arkusza kalkulacyjnego. Zmienna
Range mo¿e okrelaæ zarówno jedn¹ komór-
kê, np. B5, jak i kolekcjê komórek, np.
wszystkie komórki z wiersza drugiego oraz
komórki R53, L13 itd. Wpiszcie:
Makra programowanie w Visual Basic
M 02/007
Wiedza i Praktyka
Poradnik Komputerowy ©
Option Explicit
Sub zmieñ_cyfry_na_s³owa()
'makro zmienia w ca³ym bie¿¹cym arkuszu
cyfry na
'odpowiadaj¹ce im s³owa np. 2 -> dwa; 32 ->
Trzy_Dwa
Tekst napisany przez Was za znakiem apostrofu
' traktowany jest jako komentarz. U¿ywajcie ko-
mentarzy, aby ³atwiej póniej dotrzeæ do przy-
datnych informacji o Waszym makrze. Ka¿da
nowa linijka w edytorze UBA jest traktowana
jako nowy element kodu. Dlatego zawsze do-
k³adnie oznaczajcie pocz¹tek wiersza.
WSKAZÓWKA
M 02/008
Makra programowanie w Visual Basic
" Teraz makro musi wybraæ sporód wszystkich
komórek aktywnego arkusza te, które zawiera-
j¹ cyfry. Wpiszcie:
Powy¿sze wywo³anie mo¿na podzieliæ na cztery
czêci:
1. ActiveSheet mówi komputerowi, ¿e dalsze
operacje maj¹ siê odbywaæ na aktywnym arku-
szu (tzn. tam gdzie jest kursor).
2. .Cells wybiera z okrelonego arkusza komór-
ki. Sposób wybierania jest okrelony w kolejnej
czêci formu³y.
3. .SpecialCells(typ) wybiera tylko te komórki,
które s¹ okrelonego typu.
Styczeñ 2002 (14)
Wiedza i Praktyka
Dim i As Integer
'zadeklarowanie i jako liczby ca³kowitej
Dim d³ugoæ As Integer
'd³ugoæ jako liczbê ca³kowit¹
Dim komórka As Range
'komórkê jako zmien-
n¹ przechowuj¹c¹ zakres komórek
Dim napis As String
'napis jako zmienn¹ tekstow¹
Dim znak As String
'znak jako zmienn¹ tekstow¹
Dim s³owo As String
's³owo jako zmienn¹tekstow¹
ActiveSheet.Cells.SpecialCells(xlCellTypeCon-
stants).Select
3.
Typy komórek to:
3.
xlCellTypeComments komentarze;
3.
xlCellTypeFormlas formu³y;
3.
xlCellTypeConstants komórki z danymi (np.
napisy, liczby);
3.
xlCellTypeBlanks komórki puste;
3.
xlCellTypeVisible wszystkie widoczne ko-
mórki.
3.
Je¿eli jako typ wybierzecie formu³y lub dane to
mo¿ecie u¿yæ opcji podtyp. Wtedy funkcja bê-
dzie wygl¹da³a tak: SpecialCells (typ, podtyp).
Podtypem mog¹ byæ: xlNumbers (liczby) lub
xlTextValues (napisy). Zatem aby wybraæ tylko
komórki zawieraj¹ce liczby, musicie napisaæ Spe-
cialCells(xlCellTypeConstants, xlNumbers) jeli
tak zamienicie wywo³anie funkcji SpecialCells
w tym makrze, to na s³owa zostan¹ zamienione
jedynie cyfry tworz¹ce liczby (nie zamieni¹ siê
cyfry bêd¹ce czêci¹ napisu np. Zielona 2).
4. .Select powoduje zaznaczenie wybranych ko-
mórek.
" Teraz dla ka¿dej wybranej komórki trzeba za-
mieniæ wystêpuj¹ce w niej cyfry na odpowiada-
j¹ce im s³owa. Wpiszcie:
l
Instrukcja For Each komórka in Selection prze-
chodzi przez wszystkie wybrane komórki.
Makra programowanie w Visual Basic
M 02/009
Wiedza i Praktyka
Poradnik Komputerowy ©
For Each komórka In Selection
napis = komórka.Value
d³ugoæ = Len(napis)
s³owo = ...
M 02/010
Makra programowanie w Visual Basic
l
Funkcja wbudowana Len zwraca d³ugoæ napi-
su, czyli liczbê znaków np. wiersz programu
d³ugoæ = Len(Kowalski) przypisze zmiennej
D³ugoæ wartoæ 8.
" Teraz wpiszcie:
l
Dla ka¿dego znaku znajduj¹cego siê w aktualnie
zmienianej komórce, wybieranego za pomoc¹
Mid(napis,i,1), wywo³ujecie funkcjê zmieñ_jed-
n¹_cyfrê(znak) jeli podany jej znak jest cyfr¹,
wówczas zostaje zamieniony na odpowiednie
s³owo, jeli jest to jaki inny znak (np. litera), nie
jest zmieniany. Ze zmienionego napisu jest two-
rzone s³owo, które nastêpnie zastêpuje dotych-
czasowy napis w komórce.
" Aby powy¿sze makro dzia³a³o, musicie wpisaæ
jeszcze treæ funkcji zmieñ_jedn¹_cyfrê.
Styczeñ 2002 (14)
Wiedza i Praktyka
For i = 1 to d³ugoæ
'zmienna i przyjmuje
w pêtli wartoci od 1 do wartoci zmiennej
d³ugoæ, która w tym przypadku jest d³ugo-
ci¹ tekstu zapisanego w zmiennej napis
znak = Mid(napis, i, 1)
'wyciêcie jednego znaku ze zmiennej napis i
przypisanie go do zmiennej znak
s³owo = s³owo + zmieñ_jedn¹_cyfrê(znak)
'zamiana na s³owo i do³¹czenie
Next i
'do zmiennej s³owo
komórka.Value = s³owo
'wpisanie wyniku
operacji do zaznaczonej komórki
Next
End Sub
" Funkcja ta dostaje jako parametr jeden znak.
Instrukcja Select Case okrela, co ma zostaæ
zrobione w zale¿noci od wartoci zmiennej
znak. Opcja Case Else definiuje, co ma zo-
staæ zrobione, jeli wartoæ zmiennej znak
jest inna od wszystkich podanych powy¿ej.
"
Instrukcja zmieñ_jedn¹_cyfrê = okrela, jaki
napis ma zostaæ zwrócony jako wynik dzia³a-
nia funkcji.
" Po napisaniu makra powinnicie je zapisaæ.
Kliknijcie na ikonê Zapisz. Mo¿ecie teraz za-
mkn¹æ okno Edytora Visual Basic.
Makra programowanie w Visual Basic
M 02/011
Wiedza i Praktyka
Poradnik Komputerowy ©
Select Case znak
Case 0: zmieñ_jedn¹_cyfrê = Zero
Case 1: zmieñ_jedn¹_cyfrê = Jeden
Case 2: zmieñ_jedn¹_cyfrê = Dwa
Case 3: zmieñ_jedn¹_cyfrê = Trzy
Case 4: zmieñ_jedn¹_cyfrê = Cztery
Case 5: zmieñ_jedn¹_cyfrê = Piêæ
Case 6: zmieñ_jedn¹_cyfrê = Szeæ
Case 7: zmieñ_jedn¹_cyfrê = Siedem
Case 8: zmieñ_jedn¹_cyfrê = Osiem
Case 9: zmieñ_jedn¹_cyfrê = Dziewiêæ
Case Else: zmieñ_jedn¹_cyfrê = znak
End Select
End Function
Function zmieñ_jedn¹_cyfrê (znak As String) As
String 'funkcja zmienia cyfrê na odpowiadaj¹
ce jej s³owo
Makro
dla Worda
M 02/012
Makra programowanie w Visual Basic
" Teraz mo¿ecie uruchomiæ Wasze makro. Aby to
zrobiæ z menu Narzêdzia, wybierzcie Ma-
kro/Makra/zmieñ_cyfry_na_s³owa i nacinijcie
przycisk Uruchom.
Poni¿sze makro formatuje tekst dokumentu
MS Word tak, aby uzyska³ on szablon standardo-
wego podania. Aby wypróbowaæ jego dzia³anie,
powinnicie uruchomiæ go dla dokumentu z napi-
sanym tekstem makro wstawi odpowiednie na-
g³ówki, ponumeruje strony oraz wstawi zakoñcze-
nie z miejscem na podpis.
Po zrobieniu nowego modu³u à Pisanie makra mo-
¿ecie zacz¹æ pisaæ Wasze makro:
" Pamiêtajcie, aby zawsze na pocz¹tku pisania
makra wstawiæ poni¿sz¹ linijkê ustrze¿e Was
to przed wieloma b³êdami.
" Teraz wpiszcie nag³ówek procedury, czyli na-
zwê nowego makra Zrób Podanie.
" Jak zawsze na pocz¹tku makra musicie zade-
klarowaæ potrzebne zmienne. W tym makrze
przyda siê Wam zmienna przechowuj¹ca datê
w postaci tekstu. Wpiszcie:
Styczeñ 2002 (14)
Wiedza i Praktyka
Option Explicit
Sub ZróbPodanie()
'procedura dodaje do tekstu stosowne ele-
menty tak, aby uzyska³ on postaæ podania
" Powy¿sza instrukcja przypisze zmiennej data
aktualn¹ datê (pobran¹ z zegara systemowego
w Waszym komputerze) w postaci dzieñ.mie-
si¹c.rok.
" Teraz wpiszcie fragment makra wstawiaj¹cy nu-
meracjê stron. W stopce ka¿dej strony zostanie
umieszczony napis Strona... z... .
l
Powy¿sza linia prze³¹cza widok na stopkê bie¿¹-
cego dokumentu, podobnie jak wybranie z me-
nu Widok/Nag³ówek i stopka.
l
ActiveWindow oznacza aktywne okno w Wor-
dzie (mo¿e byæ kilka otwartych dokumentów),
l
SeekView to parametr oznaczaj¹cy, która czêæ
dokumentu jest wywietlana, mog¹ to byæ:
l
wdSeekCurrentPageFooter,
l
wdSeekCurrentPageHeader,
l
wdSeekEndnotes,
l
wdSeekEvenPagesFooter,
l
wdSeekEvenPagesHeader,
Makra programowanie w Visual Basic
M 02/013
Wiedza i Praktyka
Poradnik Komputerowy ©
Dim i As Integer
'deklaruje i jako liczbê ca³kowit¹
Dim data As String
'deklaruje zmienn¹ o na-
zwie data jako zmienn¹ tekstow¹
data = Format(Date, dd.mm.yyyy)
'przypisuje zmiennej data bie¿¹c¹ datê w po-
staci dzieñ.miesi¹c.rok
ActiveWindow.ActivePane.View.SeekView =
wdSeekCurrentPageFooter
M 02/014
Makra programowanie w Visual Basic
l
wdSeekFirstPageFooter,
l
wdSeekFirstPageHeader,
l
wdSeekFootnotes,
l
wdSeekMainDocument,
l
wdSeekPrimaryFooter,
l
wdSeekPrimaryHeader.
l
Selection jest obiektem, który wskazuje zazna-
czon¹ czêæ tekstu lub miejsce, gdzie stoi kursor,
je¿eli nic nie jest zaznaczone.
l
ParagraphFormat pozwala na formatowanie
akapitu zgodnie z ustawieniami jego parame-
trów, np. Alignment, FirstLineIndent, KeepToge-
ther, KeepWithNext, Alignment pozwala na
ustawienie wyrównania tekstu: do lewej, pra-
wej, centralnie.
" Teraz wpiszcie:
l
NormalTemplate jest obiektem wskazuj¹cym na
szablon Normal Worda, dziêki niemu mo¿ecie
u¿ywaæ w³aciwoci szablonu Normal.
AutoTextEntries jest kolekcj¹ tzw. Autotekstów
w podanym szablonie, mo¿na je zobaczyæ lub
wstawiæ, wybieraj¹c z menu Wstaw/Autotekst.
Styczeñ 2002 (14)
Wiedza i Praktyka
Selection.ParagraphFormat.Alignment = wdAli-
gnParagraphCenter
'wyrównanie tekstu centrowanie
NormalTemplate.AutoTextEntries(Strona
X z Y).Insert _Where:=Selection.Range
" Kolejny fragment makra ustawi parametry napi-
sanego przez Was tekstu. Wpiszcie:
" Styl czcionki zostanie ustawiony na Book Anti-
qua CE, rozmiar liter na 12, tekst zostanie wy-
Makra programowanie w Visual Basic
M 02/015
Wiedza i Praktyka
Poradnik Komputerowy ©
ActiveWindow.ActivePane.View.SeekView =
wdSeekMainDocument
Selection.WholeStory
'zaznacza ca³y tekst g³ównego dokumentu
(bez stopek, nag³ówków, przypisów równo-
wa¿ny naciniêciu Ctrl+A)
Selection.Font.Name = Book Antiqua CE
'ustawia czcionkê dla zanaczonego fragmentu
Selection.Font.Size = 12
'ustawia rozmiar
czcionki dla zanaczonego fragmentu
With Selection.ParagraphFormat
'with oznacza, ¿e wszystkie poni¿sze w³aci-
woci (po kropce) bêd¹ siê odnosi³y do
obiektu Selection.ParagraphFormat, czyli do
w³aciwoci akapitu zaznaczonego tekstu
Alignment = wdAlignParagraphJustify
'ustawia wyrównanie justowanie
FirstLineIndent = CentimetersToPoints(0.75)
'przekszta³ca podan¹ iloæ centymetrów na
punkty, których u¿ywa Word. 1cm = 28,35 pkt.
W tym wypadku chcemy ustawiæ wysuniêcie
pierwszej linii akapitu o 0,75 cm
LineSpacingRule = wdLineSpace1pt5
'ustawia odstêp pomiêdzy wierszami na 1,5
wiersza
End With
M 02/016Makra programowanie w Visual Basic
równany do obydwu stron kartki (wyjustowa-
ny), a odstêpy pomiêdzy wierszami zostan¹
ustawione na 1,5 linii.
" Teraz wpiszcie poni¿szy fragment programu.
Przesunie on Wasz tekst o 9 linijek w dó³, aby
powsta³o miejsce na potrzebne nag³ówki.
" Teraz wpiszcie poni¿szy tekst, który jest odpo-
wiedzialny w Waszym makrze za wstawienie
w lewym górnym rogu pierwszej strony napisu
Warszawa dn. i aktualnej daty (oczywicie, je-
¿eli chcecie, aby wstawiana by³a nazwa innej
miejscowoci, wpiszcie j¹ zamiast Warszawa).
Styczeñ 2002 (14)
Wiedza i Praktyka
Selection.MoveUp Unit:=wdLine, Count:=1
'przesuwa kursor o jedn¹ liniê w górê
Selection.HomeKey Unit:=wdStory
'ustawia kursor na pocz¹tku zadanego frag-
mentu tekstu, w tym wypadku wdStory =
ca³y dokument
For i = 1 To 9
Selection.TypeParagraph
'wstawia 9 pustych akapitów (9 x Enter)
Next i
Selection.MoveUp Unit:=wdLine, Count:=1
'przesuwa kursor o 1 liniê w górê
Selection.MoveUp Unit:=wdLine, Count:=10,
Extend:=wdExtend
'przesuwa kursor 10 linii w górê, zaznaczaj¹c je
Selection.ParagraphFormat.FirstLineIndent =
CentimetersToPoints(0)
'usuwa wysuniêcie
pierwszej linii akapitu (ustawia je na 0 pkt.)
Nie przeoczcie spacji na koñcu napisu Warsza-
wa dn., która zapewni wam lepsz¹ czytelnoæ
tego napisu.
" Teraz wpiszcie:
" W górnej prawej czêci pierwszej strony zostaje
wpisane imiê i nazwisko autora podania i jego
adres. Musicie odpowiednie dane w cudzys³o-
wach zast¹piæ Waszymi.
Makra programowanie w Visual Basic
M 02/017
Wiedza i Praktyka
Poradnik Komputerowy ©
Selection.HomeKey Unit:=wdStory
'ustawia kursor na pocz¹tku dokumentu
Selection.TypeText Text:=Warszawa dn. + data
'wpisuje podany tekst, na koñcu datê, która
by³a sformatowana na pocz¹tku makra
Selection.ParagraphFormat.Alignment = wdAlign-
ParagraphRight
'wyrównanie akapitu do prawej strony
Selection.MoveDown Unit:=wdLine, Count:=1
'kursor jedn¹ liniê w dó³
Selection.TypeText
Text:=Pawe³
Bia³ka
'wpisywanie tekstu
Selection.MoveDown Unit:=wdLine, Count:=1
'kursor jedn¹ liniê w dó³
Selection.TypeText Text:=ul. Komputerowa
8/88
'wpisywanie tekstu
Selection.MoveDown Unit:=wdLine, Count:=1
'kursor jedn¹ liniê w dó³
Selection.TypeText Text:=88-888 Krzemowa
Dolina
'wpisywanie tekstu
M 02/018
Makra programowanie w Visual Basic
" Teraz wpiszcie poni¿szy tekst:
" Pierwsze trzy linijki wstawiaj¹ w dokumencie
s³ówko Do i robi¹ miejsce na wpisanie adresu,
kolejne trzy linijki wstawiaj¹ nag³ówek
P O D A N I E ustawiony na rodku strony.
" Teraz wpiszcie ju¿ ostatni¹ czêæ waszego makra:
Styczeñ 2002 (14)
Wiedza i Praktyka
Selection.MoveDown Unit:=wdLine, Count:=1
'kursor jedn¹ liniê w dó³
Selection.ParagraphFormat.LeftIndent = Centi-
metersToPoints(8.5)
'ustawienie wysuniêcia
pierwszej linii akapitu na 8,5 cm.
Selection.TypeText Text:=Do
'wpisywanie tekstu
Selection.MoveDown Unit:=wdLine, Count:=3
'kursor 3 linie w dó³
Selection.ParagraphFormat.Alignment = wdAli-
gnParagraphCenter
'wycentrowanie akapitu
Selection.TypeText Text:=P O D A N I E
wpisywanie tekstu
Selection.EndKey Unit:=wdStory
'ustawienie kursora na koñcu dokumentu
Selection.TypeParagraph
'2 x pusty akapit
Selection.TypeParagraph
Selection.ParagraphFormat.LeftIndent = Centi-
metersToPoints(11)
'ustawienie wysuniêcia
pierwszej linii akapitu na 11 cm.
Selection.TypeText Text:=Z
powa¿aniem
'wpisywanie tekstu
" Powy¿sze siedem linii jest odpowiedzialne za
wstawienie na koñcu dokumentu po prawej
stronie napisu Z powa¿aniem. Je¿eli chcecie,
aby ten tekst znajdowa³ siê po lewej stronie
kartki, musicie w linijce czwartej jako parametr
dla CentimetersToPoints zmieniæ 11 na 1.
" Teraz pozostaje wam ju¿ tylko zakoñczyæ pro-
cedurê. Wpiszcie:
" Wasze nowe makro jest przygotowane do pra-
cy. Ilekroæ bêdziecie chcieli stworzyæ podanie,
napiszcie jego treæ i uruchomcie powy¿sze
makro, które automatycznie nada mu w³aciwy
format.
Aby uruchomiæ makro z menu Narzêdzia wybierz-
cie polecenie Makro, nastêpnie: Makra i ZróbPoda-
nie i nacinijcie przycisk Uruchom.
ZAPISYWANIE MAKRA W SZABLONIE
NORMAL.DOT
Aby Wasze makro by³o dostêpne we wszystkich
dokumentach danej aplikacji musicie przenieæ
makro z bie¿¹cego dokumentu do Normal.dot.
Makra programowanie w Visual Basic
M 02/019
Wiedza i Praktyka
Poradnik Komputerowy ©
Selection.TypeParagraph
'pusty akapit
Selection.HomeKey Unit:=wdStory
'ustawienie kursora na pocz¹tku dokumentu
End Sub
M 02/020
Makra programowanie w Visual Basic
Aby to zrobiæ:
" Otwórzcie edytor Visual Basic (Alt+F11).
" Rozwiñcie drzewo obiektów w panelu Project
tak, aby by³ widoczny modu³ z Waszym ma-
krem.
" Nastêpnie kliknijcie lewym klawiszem na ten
modu³ i trzymaj¹c klawisz, przeci¹gnijcie ten
modu³ nad szablon Normal, po czym zwolnij-
cie klawisz (czyli zwyk³e Drag &Drop).
CO ZROBIÆ, GDY PROGRAM LE DZIA£A?
Gdy ju¿ napiszecie swoje makro i je uruchomicie,
mo¿e siê zdarzyæ (a zdarza siê to czêsto), ¿e Wasz
program nie dzia³a lub dzia³a niepoprawnie.
W tym celu twórcy Edytora Visual Basic wyposa-
¿yli go w narzêdzia przydatne w szukaniu b³êdów
i diagnozie niepoprawnego dzia³ania.
Styczeñ 2002 (14)
Wiedza i Praktyka
Rys. 3. Szablon: Normal
B³êdy
podczas
pisania
programu
B³êdy
podczas
kompilacji
Jeli próbowalicie pisaæ jakie makro, z pewno-
ci¹ zauwa¿ylicie, ¿e komputer sprawdza ka¿dy
Wasz ruch i czêsto podkrela co na czerwono,
wywietlaj¹c równoczenie komunikat o b³êdzie.
Jeli przez przypadek napiszecie np. i==6 zamiast
i=6, komputer od razu to zauwa¿y i wywietli sto-
sowny komunikat.
W ten sposób program wychwytuje proste b³êdy
sk³adniowe.
Du¿o powa¿niejszym rodzajem b³êdów s¹ b³êdy
etapu kompilacji. Przed uruchomieniem napisane-
go przez Was makra komputer musi je sobie prze-
t³umaczyæ na swój w³asny jêzyk i ten proces nazy-
wamy kompilacj¹. Jest on wykonywany zawsze,
gdy chcecie wykonaæ swoje makro. Mo¿ecie rów-
nie¿ skompilowaæ program na w³asne ¿yczenie,
wybieraj¹c Compile VBA Project z menu Debug.
l
Jeli w programie wywo³alicie jaki podprogram
(procedurê lub funkcjê), który nie istnieje, kom-
puter zaprotestuje, gdy¿ nie bêdzie wiedzia³, co
Makra programowanie w Visual Basic
M 02/021
Wiedza i Praktyka
Poradnik Komputerowy ©
Opcje sprawdzania na bie¿¹co poprawnoci
sk³adniowej mo¿ecie wy³¹czyæ, wybieraj¹c
Options z menu Tools i w zak³adce Editor
odznaczaj¹c Auto Syntax Check.
WSKAZÓWKA
M 02/022
Makra programowanie w Visual Basic
ma zrobiæ. Jest to bardzo popularny b³¹d powo-
dowany literówk¹ gdy np. zamiast funkcji loso-
wa_liczba() napiszecie losoaw_liczba().
l
Drugim popularnym ród³em b³êdów wychwyty-
wanych podczas kompilacji jest próba przypisa-
nia do zmiennej czego, co tam nie pasuje. Jeli
do zmiennej typu Integer spróbujecie przypisaæ
napis, to komputer zaprotestuje, wywietlaj¹c
okienko z opisem b³êdu (ang. Type mismatch
oznacza niezgodnoæ typów).
Jest oczywicie wiele innych rodzajów b³êdów eta-
pu kompilacji, najwa¿niejsze jednak jest to, ¿e kom-
puter pokazuje miejsce, w którym jest b³¹d i wy-
wietla komunikat, jakiego jest on typu (gdy nie
wiecie, co zrobiæ, mo¿ecie skorzystaæ z Pomocy).
Op³aca siê pamiêtaæ:
H
Przydatne w praktyce makra znajdziecie na na-
szej stronie internetowej (www.poradnikkompu-
terowy.pl) za has³em.
H
Pisanie makra zacznijcie od stworzenia nowego
modu³u.
H
Komentarze, które wstawiacie do makra u³atwi¹
Wam znalezienie niezbêdnych informacji o nim.
H
W panelu Properties mo¿ecie zobaczyæ w³aci-
woci edytowanego obiektu.
H
Komentarze, czyli tekst za apostrofem, nie
wp³ywaj¹ na dzia³anie Waszego makra.
Styczeñ 2002 (14)
Wiedza i Praktyka