You are on page 1of 9

10 nagyszerű makró

Adjon turbótöltést Office alkalmazásainak az alábbi konyhakész makrókkal!


Szerző: Karen Kenworthy

A szoftverfejlesztők folyamatosan javítják, sőt fejlesztik alkalmazásaikat, de néha nem


jut eszükbe, mire vágyunk igazán. Csupán néhány apró trükkre lenne szükség, hogy a
munka gyorsabban haladhasson. Szerencsére már senkinek sem kell várnia a legújabb
termékek megjelenésére. Elérkezett az idő legkedvesebb alkalmazásaink
finomhangolására, sőt néhány idegesítő programhiba kiirtására is. Mindehhez nem kell
más, csupán egy makró, egy program ami azt használja és egy ici-pici segítség a
Windows Magazin felhasználóbarát stábjától.
A profik által csupán script-nek becézett makró tulajdonképpen csupán egy lista a
tennivalókról, amiből a számítógép megtudhatja mit kell tennie, és hogyan végezheti el
az adott feladatát. Egy-egy jól megírt makró sokkal eredményesebbé teheti a
munkánkat. Hogy ez a bimbódzó kapcsolat jól is végződjön, készítettünk 10 nagyszerű
makrót, amit bárki kedve szerint használhat, átírhat vagy akár kombinálhat, hogy
megfeleljen igényeinek. A csapat néhány tagja fantasztikus új lehetőségeket nyújt,
néhányuk megváltoztat vagy kiiktat veszélyes program elemeket, a maradék pedig
lehetőséget ad, hogy csapatmunkára bírjuk különféle programjainkat.
Az összes ismertetett makró letölthető a Windows Magazin honlapjáról a
http://www.winmag.com/karen címen. Minden letöltött makró azonnal futtatható és
tetszés szerint módosítható az egyéni igényeknek megfelelően. Természetesen a
részletes telepítési és futtatási útmutató ugyanúgy megtalálható minden egyes
makróhoz, mint a makrók különféle alkalmazásokhoz illő variációinak bő választéka.
A makrókat használó programok - beleértve a Microsoft Office különféle elemeit és
magát a Windows-t - a Windows Scripting Host-ot (Windows szöveges felület, WSH)
használják. A WSH alapkiszereltségben megtalálható a Windows 98-ban és a Windows
2000-ben, a Windows 95-höz pedig letölthető az ingyenes kiegészítés a Microsoft
honlapjáról.
Bár az alábbi példák csupán a Windows valamint a Microsoft Word, Excel és Outlook
felülvezérlésére hivatottak, a technika könnyen alkalmazható szinte mindegyik
modernebb alkalmazás irányítására. A példák Visual Basic for Application (VBA) nyelven
íródtak, de könnyen lefordítható más népszerű makró kódra, mint a Jscript vagy a
JavaScript.

Szócsere

Sok problémát okozhat 2 szó felcserélése. például minden ,eladó" ,vevő"-re váltása és
viszont, főleg egy többoldalas íromány esetében. Persze kivitelezhető, de nem könnyű. 2
hagyományos keresés-csere művelet nem elég, legalább háromra van szükség és
kiemelkedően jó memóriára, nehogy összezavarodjunk és hibázzunk.
Jobb megoldásra lenne szükség? Csupán futtatni kell a Szócserét. A makró indításkor egy
kis párbeszédablakot jelenít meg, amiben az átcserélni kívánt szavak vagy kifejezések
után érdeklődik. Természetesen a program tartalmazza a Word-ben is megismert
szokásos ,behelyettesítés" és ,csak teljes szó" lehetőségeket ahogy el is várhatjuk. Ha
rábökünk a ,Mindent cserél" gombra, a script automatikusan átvizsgálja a teljes
szöveget, vagy bármelyik kiválasztott részét, és végrehajtja a kívánt változtatásokat.
A motorházban
A WinMag által készített Szócsere egyes-egyedül végrehajtja mind a 3 szükséges
különálló keresés-csere műveletet működése során. Először is rátalál minden egyes
megjelenésére az első cserélendő kifejezésnek, és azt ideiglenesen kitölti. A kitöltő
szerepét a talányos XjlasOmcmhoX szócska látja el, ami nem valószínű, hogy feltűnik
bármely eljövendő szövegben (kivéve persze most a ford.). Következő lépésként a
Szócsere helyettesíti a cserélendő második szó minden előfordulását az elsővel, végül
pedig a makró átírja az ideiglenes kitöltőt a második megadott kifejezéssé.
Private Sub btnReplaceAll_Click()
Dim rng As Range

If (txtSwap1.Text < = " ") Or (txtSwap2.Text < = " ") Then


MsgBox "Swap text cannot be blank", vbonly _
Or vbExclamation, "Swap error"
Exit Sub
End If

Set rng = Selection.Range

frmSwap.Caption = "Swap Working "

With rng.find
.Text = txtSwap1.Text
.Replacement.Text = "XjlasOcmhoX"
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = chkCase.Value

.MatchWholeWord = chkWhole.Value
.MatchAllWordForms = chkWordForms.Value
.MatchWildcards = chkWildcards.Value
.MatchSoundsLike = chkSoundsLike.Value
.Execute Replace: = wdReplaceAll
End With

With rng.find
.Text = txtSwap2.Text
.Replacement.Text = txtSwap1.Text
.ClearFormatting
.Replacement.ClearFormatting
.Execute Replace: = wdReplaceAll
End With

With rng.find
.Text = "XjlasOcmhoX"
.Replacement.Text = txtSwap2.Text
.Execute Replace: = wdReplaceAll
End With
frmSwap.Caption = "Swap Done"
btnCancel.Caption = "Close"
End Sub

WSH levelezés

Ez a hasznos kis makró átveszi az irányítást az Outlook (vagy más MAPI alapú
levelezőprogram) egy része felett, és fájl küldésére utasítja. Ha az ,asztal"-ra helyezzük a
programfájlt, elég egy dupla kattintás a művelethez. Kiválóan alkalmas időszaki jeletések
vagy más, gyakran frissítendő írások kiküldésére.
A motorházban
Feltétlenül meg kell változtatni a makró egyes részeit, saját igényeinkhez igazítva a
kiválasztott fájl nevét, a megcélzott címet és az üzenet tárgyát, mielőtt a programot
használatba állítjuk. Természetesen megadható több adatállomány vagy címzett,
pontosvesszővel elválasztva (pl. terjesztes@byte.hu; posta@byte.hu).

Dim objNameSpace
Dim objOutlookApp
Dim objItem

Set objOutlookApp = CreateObject("Outlook.Application")


Set objNameSpace = objOutlookApp.GetNameSpace(,MAPI")
Set objItem = objOutlookApp.CreateItem(0) 'MailItem
objItem.To = "karenk@winmag.com"
objItem.Attachements.Add "C:\WinMag.log", 1, , _
"WinMag Log File"
objItem.Subject = "WinMag Log File"
objItem.Display
objItem.Send
Wscript.Quit
'Mail From WSH
Fájl megnyitás/mentés korlátozása

Ha egy munkahelyen több felhasználó is dolgozik ugyanazon a gépen, jogos az igény,


hogy korlátozhatóak legyenek a hozzáférési jogok a gépen belül, sőt, akár hálózaton
keresztül is. Ez a makró lehetőséget ad annak szabályzására, hogy a belépési
információja alapján a felhasználó melyik World állományt tekintheti meg és
szerkesztheti át. A Fájl/megnyitás menüpontot választva ugyanis csak az engedélyezett
állományok jelennek meg, a számítógép és a hálózat fennmaradó része elérhetetlen.
A korlátozó információ a regisztrációs adatbázis CURRENT_USER részében kap helyet.
Természetesen ez a makró is szabadon módosítható, hogy teljes hozzáférést biztosítsunk
a felhasználóknak.
A motorházban
A makró átveszi a Word beépített File/Open folymatának irányítását. A hagyományos
megnyitás ablak helyett amellyel az egész merevlemezt és a teljes hálózatot be lehet
barangolni egyéni ablakot jelenít meg, amely csupán a megtekinthető fájlokat
tartalmazza. Mivel a makró a navigálást letiltja, a dokumentumfájloknak a megfelelő
könyvtárban kell lenniük, a szokott „.doc” kiterjesztéssel.
A makró a Word „Mentés másként” menüpontja felett is átveszi a vezérlést, hogy
megelőzze a dokumentumok elfogadott könyvtáron kívülre mentését. Minden esetben a
hagyományos mentés menüpontot használja megőrizve a fájl eredeti nevét és helyét.

Global Const WMR = "WinMag Restrictor"

Sub FileOpen()
Dim fid As String
Dim RestrictPath As String
Dim RestrictMask As String

RestrictPath = GetSetting("WinMag", "Restrict", "Path", "")


If (RestrictPath > " ") Then
If (Right$(RestrictPath, 1) < > "\") Then
RestrictPath = RestrictPath & "\"
End If
End If
RestrictMask = GetSetting("WinMag", "Restrict", "Mask", "")

Load frmOpen
frmOpen.lstFiles.Clear
On Error Resume Next
ChDir RestrictPath
If Err Then
MsgBox "Directory " & Chr$(34) & RestrictPath & _
Chr$(34) & " does not exist" & vbCrLf & _
"Contact your System Administrator", _
vbOKOnly Or vbExclamation, WMR
Exit Sub
End If
fid = Dir(RestrictPath & RestrictMask)
While fid > " "
frmOpen.lstFiles.AddItem fid
fid = Dir
Wend
If frmOpen.lstFiles.ListCount < = 0 Then
MsgBox "No files available", vbOKOnly _
Or vbExclamation, WMR
Exit Sub
Unload frmOpen
End If
frmOpen.Show
If frmOpen.OpenCancel Then Exit Sub
fid = frmOpen.lstFiles.List(frmOpen.lstFiles.ListIndex)

ChangeFileOpenDirectory RestrictPath
Documents.Open FileName: = fid, ConfirmConversions: = False, _
ReadOnly: = frmOpen.chkReadOnly.Value, _
AddToRecentFiles: = False, PasswordDocument: = "", _
PasswordTemplate: = "", Revert: = False, _
WritePasswordDocument: = "", WritePasswordTemplate: = "", _
Format: = wdOpenFormatAuto
Unload frmOpen
End Sub
Sub FileSaveAS()
ActiveDocument.Save
End Sub

Korlátozás felügyelet

Természetesen az előző makróhoz szükség van egy rendszergazdára, aki létrehozza, és


időröl-időre módosítja a korlátozást a változó igényeknek megfelelően. A Korlátozás
felügyelet makró létrehozza és módosítja a CURRENT_USER egyes regisztrációs
bejegyzéseit. Először is rákérdez, melyik lemezegység melyik könyvtára tárolja majd a
dokumentumokat. Második lépésként a szűrési séma beállítását kéri (mint például az
ajánlott: *.doc). Végül megjeleníti a rendszergazda által bejegyzett információkat, és
elmenti azokat a regisztrációs adatbázisban.
A motorházban
A WSH alkalmat ad a korlátozott könyvtár kiválasztására, vagy akár a korlátozás
kiiktatására. Éppen ezért az a felhasználók gépein nem lehet elérhető, hiszen
segítségével kijátszhatnák a védelmet. Mivel a felügyelőprogram is WSH környezetben
fut, a beállítások elvégzése után könnyen eltávolítható. A bevitt információt a WSH
beépített WSHShell.RegWrite eleme tárolja. A makró végén található 3 megjegyzés sor
aposztroffal kezdve. A jelek törlésével a Fájl megnyitás/mentés korlátozása makró által a
regisztrációs adatbázison végrehajtott minden változás törlődik, és az adatbázis visszaáll
eredeti állapotába. A változtatás természetesen egyben leállítja a korlátozást.
Az alábbi technika szabadon változtatható, így bármi megjeleníthető, megváltoztatható,
vagy éppen törölhető a regisztrációs adatbázisban.

Dim WSHShell
Dim strPath
Dim strMask
Dim intYorN
Dim strRegKey

strRegKey = " HKCU\Software \VB and VBA Program Settings \WinMag \Restrict \"
Set WSHShell = WScript.CreateObject("WScript.Shell")

strPath = InputBox("Enter restricted Drive: \Path",


_"WinMag Restrictor")

If (strPath < = " ") Then WScript.Quit

If Right(strPath, 1) < > "\" Then strPath = strPath & "\"


strMask = InputBox("Enter restricted Mask (e.g. *.doc)", _
"WinMag Restrictor")
If (strMask < = " ") Then WScript.Quit

intYorN = MsgBox("Storing:" & vbCrLf & "Path: " & strPath & vbCrLf _
& "Mask: " & strMask, vbOKCancel, "WinMag Restrictor")

if intYorN = vbCancel Then WScript.Quit

WSHShell.RegWrite strRegKey & "Path \", strPath


WSHShell.RegWrite strRegKey & "Mask \", strMask

'The following three lines can be enabled to delete all Restrictor Reg Entries
'WSHShell.RegDelete strRegKey & "Mask \"
'WSHShell.RegDelete strRegKey & "Path \"
'WSHShell.RegDelete strRegKey

WScript.Quit

Az MRU eltávolítása

A trükkösebb felhasználók könnyen elcsábulhatnak és megpróbálhatják kijátszani a Fájl


megnyitás/mentés korlátozását azzal, hogy az alkalmazás MRU-jából (Most Recently
Used, legutoljára használt) hívják le a fájlokat. Ez a kis lista általában a fájl menü
legaljában található és az utoljára megnyitott 4 fájl nevét és elérési útját tartalmazza, így
lehetőséget nyújtva azok behívására a korlátozás ellenére. Ezt a rést elzárandó, és a
legutóbbi munkáink iránt kiváncsiskodók megfricskázására az MRU eltávolitása makró
kikapcsolja az alkalmazás MRU listáját. Ugyanezzel a technikával bármely más
programban eltüntethető az MRU lista. Példának okáért a FeatureInstall =
msoFeatureInstall OnDemandWithUI sor, a makróban bárhol elhelyezve automatikusra
állítja az Office Kérésre telepítés tevékenységét, így az új elemek első használatukkor a
felhasználó közbelépése nélkül kerülnek fel a merevlemezre.
A motorházban
A Word minden inditásakor futtatja a makrók AutoExec soraiban elhelyezett utasításait.
Ha a makrót a NORMAL.DOT-ba helyezzük, minden egyes dokumentum megnyitásakor
működésbe lép. Más sablonba helyezve pedig csak abban az esetben lép életbe a script,
ha az adott sablonnal hozunk létre dokumentumot (például: fax fedőlap, jelentés).
Az MRU eltávolítása a Word DisplayRecentFiles tulajdonságát False-ra állítva éri el
hatását. Hogy megakadályozzuk a felhasználót ennek visszaállításában, a makró
módosítja azt az utasítást, amelyet a Word Eszközök/Beállítások menüpontja futtat. Az új
parancs először is eltünteti az MRU listát, majd megjeleníti a hagyományos Beállítások
panelt. Miután a felhasználó elvégezte az általa igényelt változtatásokat a makró újból
kikapcsolja a listát. Ezzel felülíródik minden olyan változás, ami az MRU-t érintette,
miközben a többi új beállítás érvényes marad.

Sub AutoExec()
Application.DisplayRecentFiles = False
End Sub

Sub ToolsOptions()
Dim dlg As Dialog

Application.DiplayRecentFiles = False
Set dlg = Dialogs(wdDialogToolsOptions)
dlg.Show
Application.DisplayRecentFiles = False
End Sub

Szerkesztés lista

Sokszor hasznos lenne, ha kedvenc alkalmazásaink listát készítenének arról milyen


állományokat szerkesztettünk át, és mikor. Most már képesek erre. Bár az alábbi példa a
Wordhöz készült, ugyanezzel a technikával könnyen javítható az Excel, és még sok más
program teljesítménye. A jegyzék megnyitása és a bejegyzések mentése automatikusan
folyik a háttérben, nem igényel semmiféle felhasználói közbelépést. A lista a
WINMAG.LOG nevü fájlban található, amely tartalmazza minden egyes érintett állomány
teljes nevét a teljes elérési úttal egyetemben, valamint a megnyitás, vagy mentés
dátumát és időpontját. Amennyiben más helyre, vagy més néven szeretnénk a listánkat
menteni, könnyen megtehetjük az objLogger.LogFileName = ,C:\WinMag.log" sor
megváltoztatásával, példának okáért objLogger.LogFileName = ,C:\My
Documents\LogEntries.txt" sorrá.
A feljegyzések TSV (tabulátorral elválasztott értékek) formátumban kerülnek tárolásra,
így a későbbiekben könnyen beilleszthetőek táblázatokba vagy jelentésbe.
A motorházban
A listakészítő program néhány új sor bejegyzésével kezdi a munkát az AutoExec sorban.
Ezen sorok egyike létrehoz egy előzetes példát a makró listázására. Ez a példa hozza
létre a későbbiekben az összes automatikus feljegyzést. Egy másik sor tartalmazza a
naplófájl nevét, hogy az a makró összes eleme számára elérhető legyen. Az utolsó sor az
AutoExec részben elkészíti az első bejegyzést, feljegyezve a Word elindításának pontos
időpontját.
A makró fennmaradó része a Logger nevezetü modulban kap helyet. Itt találhatóak az
alkalmazás eseményeit kezelő utasítások. Az egyik ilyen parancs minden alkalommal
elindul, ahányszor csak megnyílik egy dokumentum, egy másik a bezáráskor vagy
mentéskor használatos, a harmadik alprogram új dokumentumok létrehozásakor indul el,
az utolsó pedig közvetlenül a Word-ből való kilépés előtt. Mindegyikük egy másik
alprogramhoz, a LogWrite-hoz, fordul, hogy a merevlemezre mentse a bejegyzéseket.

' WinMag Module


AutoExec()
Set objLogger = New Logger
objLogger.LogFileName = ,C:\WinMag.log"
objLogger.Comment ,Start", ,Word"
End Sub

' Logger Class Module


Public LogFileName As String

Private WithEvents WordApp As Word.Application

Public Sub Comment(c1 As String, Optional c2 As String)


If IsMissing(c2) Then
LogWrite c1
Else
LogWrite c1, c2
End If
End Sub

Private Sub LogWrite(d As String, Optional a As String)


Dim logtime As Date

logtime = Now
Open LogFileName For Append Access Write Lock Write As 1
Print 1, Format$(logtime, ,short date"); vbTab;
Print 1, Format$(logtime, ,long time"); vbTab;

Print 1, d;
If Not IsMissing(a) Then Print 1, vbTab; a;
Print 1, ,"
Close 1
End Sub

Private Sub Class_Initialize()


Set WordApp = Application
End Sub

Private Sub WordApp_DocumentBeforeClose(byVal _


Doc As Document, Cancel As Boolean)
LogWrite ,Close", Doc.FullName
End Sub

Private Sub WordApp_DocumentOpen(By Val Doc As Document)


LogWrite ,Open", Doc.FullName
End Sub

Private Sub WordApp_NewDocument(By Val Doc As Document)


LogWrite ,Create", Doc.FullName
End Sub

Private Sub WordApp_Quit()


LogWrite ,Stop","Word"
End Sub

Gyors számláló

Sok alkalmazás képes megjeleníteni a segítségével készített fájl szavainak számát. De


ezek legtöbbje sok más információt is tartalmaz, mint például a karakterek, mondatok,
bekezdések száma. Ha csupán a szavak számlálására van szükség, a mellékes
információk összegyűjtése érzékelhetően lassítja a folymatot. A Gyors számláló a lehető
legegyszerűbben megszámolja a szavakat és megjeleníti az eredményt az alkalmazás
ablakának legaljában található állapotsorban. Amennyiben szavak helyett a karaktereket
akarjuk megszámoltatni a harmadik sort át kell szerkeszteni StatusBar = ,Words in
document:" & ActiveDocument.Characters.Count (esetleg a ,Characters in document:"
csere is helyénvaló lehet a ford).
A motorházban
A módszer olyan egyszerű, amennyire egy makró csak lehet. Ez a rövid program először
megnézi a szavak számát az éppen használt dokumentum ActiveDocument Word.Count
tulajdonságában. Majd megjeleníti a számot a StatusBar tulajdonságaként tárolva.
Amennyiben bármilyen hiba történik, a makró hibaüzenettel jelzi, nincsen aktív
dokumentum.

Sub QwordCount()
On Error Resume Next
StatusBar = ,Words in document:" &ActiveDocument.Words.Count
If Err Then StatusBar = ,No active document"
End Sub

Nagybani Csere

Olyan információk, mint például telefonszámok, címek, nevek, és márkanevek időröl


időre változnak. Néha egyszerre több adat is elavul. Amikor ez bekövetkezik, igencsak jól
jön ez a makró. A program beolvassa a cserélendő szavakat tartalmazó fájlt és
automatikusan végrehajt minden kért változtatást az éppen használt írásban. A
cserélendőket tartalmazó állomány egy egyszerű szövegfájl, amelyben minden sor egy
teljes változtatást tartalmaz. Először a cserélendő szót, vagy kifejezést, utána pedig
tabulátorral elválasztva azt a kifejezést, amire cserélni akarjuk. A program segítségével
annyi változtatást hajthatunk végre egyszerre, amennyire csak szükségünk van.
A motorházban
A makró először megjeleníti a párbeszédablakot, ahol beüthető a változtatandókat
tartalmazó fájl neve és választani lehet a hagyományos keresés-csere lehetőségek közül.
Ha az ablak Replace All (mindent cserél) gombjára bökünk a program azonnal beolvassa
a megadott állományt és végrehajt minden abban megadott helyettesítést. Az Undo All
gombot választva minden addig tett változtatás törlődik.

Global Const WMBR = ,WinMag Bulk Replace"

Private Sub btnReplace_Click()


Dim strLine As String
Dim strToken() As String
Dim intLine As Long

On Error Resume Next


Open txtFID.Text For Input As 2
If Err Then
MsgBox ,Bulk Replace Request file not found", _
vbOkOnly Or vbExclamation, WMBR
Exit Sub
End If

StatusBar = ,Bulk Replace in progress "


Line Input 2, strLine
While (Err = 0) And (Len(strLine) > 3)
intLine = intLine + 1
strToken = Split(strLine, vbTab, 3)
If (strToken(0) > , ") And (strToken(1) > , ") Then
Repl strToken (0), strToken(1)
Else
MsgBox ,Error in line" & Format$(intLine), _
vbOkOnly Or vbExclamation, WMBR
End If
Line input 2, strLine
Wend
Close 2
Status Bar = ,Bulk Replace done"
btnCancel.Caption = ,Close"
txtFID.SetFocus
End Sub

Private Sub Repl(strFind As String, strRepl As String)


Dim rng As Range
Set rng = Selection.Range

With rng.find
.Text = strFind
.Replacement.Text = strRepl
.ClearFormatting
.Replacement.ClearFormatting
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = chkCaseValue
.MatchWholeWord = chkWhole.Value
.MatchAllWordForms = chkWordForms.Value
.MatchWildcard = chkWildcards.Value
.MatchSoundsLike = chkSoundsLike.Value
.Execute Replace: = wdReplaceAll
End With
End Sub

E-mail figyelmeztető

Legtöbb levelezőprogram figyelmeztet új üzenet érkezésekor. De az általuk nyújtott


értesítés általában szinte észrevétlen, csupán egy apróbb ikonból, rövid dallamból vagy
csöppnyi ablakocskából áll. Ez a makró megváltoztatja az Outlook új levél érkezésére
adott figyelmeztetését, hogy még véletlenül se lehessen azt figyelmen kívül hagyni. Új
üzenet érkezésekor az E-mail figyelmeztető megjelenít egy jókora párbeszédablakot, és
folyamatosan játssza a megadott Wav vagy MIDI fájlt mindaddig, míg az OK gombbra
kattintva tudomásul nem vesszük az üzenet érkezését.
A motorházban
A makró az Outlook új levél esetén induló programjában kezd működni. Ez az alprogram
(Application_NewMail) automatikusan elindul minden alkalommal, ha új levél érkezik. Az
általunk módósított verzió az E-mail figyelmeztető párbeszédablakát jeleníti meg, utána
pedig újra és újra elindítja a Windows API PlaySound elemét, hogy lejátssza a kiválasztott
dallamot.

Private Sub Application_NewMail()


frmAnnoy.Show
DoEvents
While Not (frmAnnoy.StopFlag)
frmAnnoy.Annoy
Wend
Unload frmAnnoy
End Sub

Public StopFlag As Boolean

Private Declare Function PlaySound Lib ,winmm.dll" _


Alias ,PlaySoundA" _
(By Val lpszName As String, By Val hModule As Long, _
By Val dwFlags As Long) As Long

Public Sub Annoy ()


While Not StopFlag
PlaySound ,C:\windows\media\chimes.wav", 0, 0
DoEvents
Wend
End Sub

Private Sub btnOK_Click()


StopFlag = True
End Sub

Ügynök

Ügynök a Microsoft által adományozott neve annak a technológiának, ami azokat a cuki
rajzfilmfigurákat jeleníti meg amíg egy Office alkalmazást futtatunk. Ez a technológia
általános eleme lesz a Windows 2000-nek, de Windows 98-hoz és 95-höz is ingyenesen
letölthető a kiegészítő program a
http://msdn.microsoft.com/workshop/imedia/agent/agentdl.asp címről. A kiegészítés
telepítése után más alkalmazásokban is használhatóak a figurák, beleértve a saját
makrókat is.
Az alábbi makró megmutatja, hogyan lehet egy Ügynökkel (Peedy-vel a papagájjal)
megjeleníttetni az általunk választott információt. Sőt, a szintén ingyenesen letölthető
irás-beszéd átalakítóval Peedy akár ki is mondhatja amit hallani szeretnénk.
Ha másik Ügynököt szeretnénk szerepeltetni, csupán meg kell változtatni a strName =
,Peedy" sort strName = ,Genie" vagy ,Merlin" vagy ,Robby" vagy más ügynök nevére.
Szintén megváltoztatható az Ügynök üdvözlőmondata is a objChar.Speak (,Hello! I'm "
&strName) sor átváltoztatással példának okáért objChar.Speak (,Howdy Pardner!") sorrá.
A motorházban
Az Ügynökök a gesztusok széles választékával rendelkeznek. Ez a makró ebből kettőt
mutat be: az integetést és a fülelést. Az Ügynökök az alkalmazások felpezsdítése mellett
akár arra is használhatóak, hogy rendszergazdaként fontos információkat kérjünk a
felhasználóktól. További példák és letölthető elemek találhatóak a
http://www.winmag.com címen.

Dim objAgent
Dim objChar
Dim objRequest
Dim txtSpeak
Dim strName

Set objAgent = CreateObject(,Agent.Control.1")


objAgent.Connected = True
strName = ,Peedy"
objAgent.Characters.Load strName, strName & ,.acs"
Set objChar = objAgent.Characters(strName)
'objChar.LanguageID = &h409

objChar.Show

objChar.Speak (,Hello! I'm , & strName)


objChar.Play ,Wave"
txtSpeak = ,What should I say next?"

While txtSpeak > , "


objChar.Speak txtSpeak
'objChar.Play ,Hearing_1"
txtSpeak = InputBox(,What should I say next?", _
,WinMag Speak")
Wend
objChar.Speak ,Goodbye!"
objChar.Hide
MsgBox ,Goodbye!", vbokonly, ,WinMag Speak"
Set objChar = Nothing
objAgent.Characters.Unload strName

WScript.Quit

Karen Kenvorthy a Windows Magazine segéd-szerkesztője.


Ha éppen nem cikket ír, különféle Visual Basic programokat kódol vagy rendfentartó
szervek tanácsadója a számítógépes bűnözéshez kapcsolódó ügyekben.

You might also like