background image

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 powinniœcie zacz¹æ pisanie makra?

M 02/005

ì

Jak uruchomiæ napisane makro?

M 02/012

ì

Dlaczego powinniœcie u¿ywaæ komentarzy?

M 02/007

ì

Co powinniœcie 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 haœle:

background image

Dlaczego 

powinniœcie

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 uproœciæ  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¿liwoœci 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

background image

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  wyœwietla  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

background image

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³aœnie  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  wejœciu  jakieœ

parametry,  przetwarza  je  i zwraca  wynik.  Dziêki

Styczeñ 2002 (14)

Wiedza i Praktyka

Rys. 1. Edytor VBA

background image

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³aœciwoœci. Wyœwietlane s¹ tam w³aœci-

woœci 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 poprawnoœci gra-

matycznej – GrammarChecked itp. Mo¿ecie te¿ je

tam zmieniæ. Jeœli edytowanym obiektem jest mo-

du³ standardowy, to panel Properties zawiera tylko

nazwê modu³u (Name), która jest jego jedyn¹ w³a-

œciwoœci¹. 

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  ©

background image

Makro 

dla Excela

M 02/006Makra – programowanie w Visual Basic

¯eby zrobiæ Wasze makro musicie stworzyæ nowy

modu³:

" W tym celu naciœnijcie 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ê domyœln¹ (np. Module1)

Wasz¹ w³asn¹ nazw¹.

" Teraz powinniœcie 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

background image

" 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  okreœlaæ  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

background image

M 02/008

Makra – programowanie w Visual Basic

" Teraz  makro  musi  wybraæ  spoœró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 okreœlonego arkusza komór-

ki. Sposób wybierania jest okreœlony w kolejnej

czêœci formu³y.

3. .SpecialCells(typ)  –  wybiera  tylko  te  komórki,

które s¹ okreœlonego 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

background image

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)  –  jeœli

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 = „...”

background image

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) – jeœli podany jej znak jest cyfr¹,

wówczas  zostaje  zamieniony  na  odpowiednie

s³owo, jeœli 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  wartoœci  od  1  do  wartoœci  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

background image

" Funkcja ta dostaje jako parametr jeden znak. 

– Instrukcja  Select  Case okreœla,  co  ma  zostaæ

zrobione w zale¿noœci od wartoœci zmiennej

znak.  Opcja  Case  Else definiuje,  co  ma  zo-

staæ  zrobione,  jeœli  wartoœæ  zmiennej  znak

jest inna od wszystkich podanych powy¿ej.

"

– Instrukcja  zmieñ_jedn¹_cyfrê =  okreœla,  jaki

napis ma zostaæ zwrócony jako wynik dzia³a-

nia funkcji.

" Po  napisaniu  makra  powinniœcie  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

background image

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 naciœnijcie

przycisk Uruchom.

Poni¿sze  makro  formatuje  tekst  dokumentu 

MS  Word  tak,  aby  uzyska³  on  szablon  standardo-

wego  podania.  Aby  wypróbowaæ  jego  dzia³anie,

powinniœcie 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

background image

" 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 wyœwietlana, 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

background image

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³aœciwoœci 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

background image

" 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 naciœniê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³aœci-

woœci  (po  kropce)  bêd¹  siê  odnosi³y  do

obiektu  Selection.ParagraphFormat,  czyli  do

w³aœciwoœci 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

background image

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 (oczywiœcie, je-

¿eli  chcecie,  aby  wstawiana  by³a  nazwa  innej

miejscowoœci,  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.)

background image

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

background image

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

background image

" 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³aœciwy

format.

Aby uruchomiæ makro z menu Narzêdzia wybierz-

cie polecenie Makro, nastêpnie: Makra i ZróbPoda-

nie i naciœnijcie 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

background image

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

background image

B³êdy 

podczas 

pisania

programu

B³êdy 

podczas

kompilacji

Jeœli  próbowaliœcie  pisaæ  jakieœ  makro,  z pewno-

œci¹  zauwa¿yliœcie,  ¿e  komputer  sprawdza  ka¿dy

Wasz  ruch  i czêsto  podkreœla  coœ  na  czerwono,

wyœwietlaj¹c równoczeœnie komunikat o b³êdzie. 

Jeœli przez przypadek napiszecie np. i==6 zamiast

i=6, komputer od razu to zauwa¿y i wyœwietli 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

Jeœli w programie wywo³aliœcie 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  poprawnoœci

sk³adniowej  mo¿ecie  wy³¹czyæ,  wybieraj¹c

Options  z menu  Tools  i w zak³adce  Editor

odznaczaj¹c Auto Syntax Check.

WSKAZÓWKA

background image

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. Jeœli

do zmiennej typu „Integer” spróbujecie przypisaæ

napis,  to  komputer  zaprotestuje,  wyœwietlaj¹c

okienko  z opisem  b³êdu  (ang.  Type  mismatch

oznacza niezgodnoœæ typów).

Jest oczywiœcie 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³aœci-

woœci edytowanego obiektu.

H

Komentarze,  czyli  tekst  za  apostrofem,  nie

wp³ywaj¹ na dzia³anie Waszego makra.

Styczeñ 2002 (14)

Wiedza i Praktyka