Wikipédia:Wikipédia szerkesztés MS Word makrókkal

Ez a technikai leírás a Microsoft Word program használatát mutatja be, melynek segítségével gyakran ismétlődő, unalmas szerkesztési műveleteket egyszerűsíthetünk le és gyorsíthatunk fel. A cikk tartalmaz egy példát is a Word makrók használatához is.

A Microsoft Wordben lehetőségünk van ún. makrókat írni és futtatni. Ezek az apró kicsi programok a hosszabb szövegek átalakítását segítik elő. Lehetőség van egy hosszabb szöveg vagy szövegrész szavainak automatikus cseréjére is, mely jól jöhet, ha idegen nyelvű szöveget veszünk át más Wikipédiából (pl.: egy infoboxot).

Makró írásához programozási tudás nem szükséges, ugyanis a beépített makrórögzítő képes a gyorsgombokkal vagy az egérrel végzett műveletek rögzítésére is. Így elég csak végiggondolnunk, hogy mit szeretnénk, elindítjuk a makrórögzítőt, sorba megoldjuk a feladatot, majd leállítjuk a rögzítést. A kész programot menthetjük csak egy bizonyos dokumentumba, így az csak ott fog működni, vagy a normal.dot sablonba. Ekkor bármely megnyitott dokumentumban lefuttathatjuk a programot.

Példaprogram szerkesztés

A repülőterekről szóló angol cikkek gyakran tartalmaznak a kifutópályákról is adatokat (hossz, szög, anyag). Ezeket azonban kézzel átmásolni a magyar cikkekbe meglehetősen unalmas feladat, ráadásul könnyedén el is hibázhatjuk a másolást. Ebben az esetben egy makró nagy segítséget nyújt.

Angol infobox tartalma szerkesztés

| r1-number    = 4L/22R
| r1-length-f  = 7,500
| r1-length-m  = 2,286
| r1-surface   = [[Asphalt]]
| r2-number    = 4R/22L
| r2-length-f  = 8,075
| r2-length-m  = 2,461
| r2-surface   = Asphalt
| r3-number    = 9L/27R
| r3-length-f  = 7,500
| r3-length-m  = 2,286
| r3-surface   = Concrete
| r4-number    = 9R/27L
| r4-length-f  = 7,967
| r4-length-m  = 2,428
| r4-surface   = Asphalt/Concrete
| r5-number    = 10C/28C
| r5-length-f  = 10,800
| r5-length-m  = 3,291
| r5-surface   = Concrete
| r6-number    = 10L/28R
| r6-length-f  = 13,001
| r6-length-m  = 3,962
| r6-surface   = Asphalt/Concrete
| r7-number    = 14L/32R
| r7-length-f  = 10,005
| r7-length-m  = 3,050
| r7-surface   = Asphalt
| r8-number    = 14R/32L
| r8-length-f  = 9,685
| r8-length-m  = 2,952
| r8-surface   = Asphalt/Concrete

Az infoboxnak a fenti részét bemásoljuk egy üres Word dokumentumba, majd lefuttatjuk az alábbi makrót:

Makró szerkesztés

Megjegyzés: a makrórögzítővel készített Visual Basic program nem épp tömör és optimális kódot eredményez, de legalább áttekinthető és működőképes. Ez a példa nyolc hasonló cserét végez, továbbá eltávolítja azokat a sorokat, mely nem szerepel a magyar infoboxokban. Az első nyolc cserét ciklussal is meg lehetne oldani ebben az esetben, ám ha másféle, nem ennyire egyforma cseréket végzünk, akkor a ciklus nem jó megoldás. A kódot testre szabhatjuk és saját cserélendő szavakkal módosíthatjuk. A .Text = "r1-number" a keresett és cserélendő kifejezést mutatja, a példában az r1-number szót idézőjelek között, míg a .Replacement.Text = "kifutó_szög1" a helyettesítő szöveget mutatja, a példánkban kifutó_szög1, szintén idézőjelek között.

Sub kifutópályák()
'
' kifutópályák Makró
' Kifutópályák adatainak fordítása magyarra
'
    Selection.HomeKey Unit:=wdLine
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "r1-number"
        .Replacement.Text = "kifutó_szög1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r2-number"
        .Replacement.Text = "kifutó_szög2"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r3-number"
        .Replacement.Text = "kifutó_szög3"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r4-number"
        .Replacement.Text = "kifutó_szög4"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r5-number"
        .Replacement.Text = "kifutó_szög5"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r6-number"
        .Replacement.Text = "kifutó_szög6"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r7-number"
        .Replacement.Text = "kifutó_szög7"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r8-number"
        .Replacement.Text = "kifutó_szög8"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "r8-number"
        .Replacement.Text = "kifutó_szög8"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "r1-length-m"
        .Replacement.Text = "kifutó_hossz1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r2-length-m"
        .Replacement.Text = "kifutó_hossz2"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r3-length-m"
        .Replacement.Text = "kifutó_hossz3"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r4-length-m"
        .Replacement.Text = "kifutó_hossz4"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r5-length-m"
        .Replacement.Text = "kifutó_hossz5"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r6-length-m"
        .Replacement.Text = "kifutó_hossz6"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r7-length-m"
        .Replacement.Text = "kifutó_hossz7"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r8-length-m"
        .Replacement.Text = "kifutó_hossz8"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    With Selection.Find
        .Text = "r1-surface"
        .Replacement.Text = "kifutó_burkolat1"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r2-surface"
        .Replacement.Text = "kifutó_burkolat2"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r3-surface"
        .Replacement.Text = "kifutó_burkolat3"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r4-surface"
        .Replacement.Text = "kifutó_burkolat4"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r5-surface"
        .Replacement.Text = "kifutó_burkolat5"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r6-surface"
        .Replacement.Text = "kifutó_burkolat6"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r7-surface"
        .Replacement.Text = "kifutó_burkolat7"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "r8-surface"
        .Replacement.Text = "kifutó_burkolat8"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "asphalt"
        .Replacement.Text = "aszfalt"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "concrete"
        .Replacement.Text = "beton"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    With Selection.Find
        .Text = "Grass"
        .Replacement.Text = "Fű"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
    Selection.Find.ClearFormatting
    For x = 1 To 8
    With Selection.Find
        .Text = "length"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute
    Selection.EndKey Unit:=wdLine
    Selection.HomeKey Unit:=wdLine, Extend:=wdExtend
    Selection.TypeBackspace
    Selection.TypeBackspace
    Next x
End Sub

Lefordított sablon szerkesztés

A makró futtatása után a Wordben az alábbi szöveget kapjuk:

| kifutó_szög1    = 4L/22R
| kifutó_hossz1  = 2,286
| kifutó_burkolat1   = [[Aszfalt]]
| kifutó_szög2    = 4R/22L
| kifutó_hossz2  = 2,461
| kifutó_burkolat2   = Aszfalt
| kifutó_szög3    = 9L/27R
| kifutó_hossz3  = 2,286
| kifutó_burkolat3   = Beton
| kifutó_szög4    = 9R/27L
| kifutó_hossz4  = 2,428
| kifutó_burkolat4   = Aszfalt/Beton
| kifutó_szög5    = 10C/28C
| kifutó_hossz5  = 3,291
| kifutó_burkolat5   = Beton
| kifutó_szög6    = 10L/28R
| kifutó_hossz6  = 3,962
| kifutó_burkolat6   = Aszfalt/Beton
| kifutó_szög7    = 14L/32R
| kifutó_hossz7  = 3,050
| kifutó_burkolat7   = Aszfalt
| kifutó_szög8    = 14R/32L
| kifutó_hossz8  = 2,952
| kifutó_burkolat8   = Aszfalt/Beton    

Ezt már csak be kell másolni egy magyar cikkbe és kész is vagyunk.

A példában szereplő makrót úgy tudjuk használni, hogy elindítjuk a Word-öt, Fejlesztőeszközök menü, Makrók gomb, majd a megjelenő párbeszédablakon a Létrehozás gombra kattintunk és bemásoljuk a makró kódját, felülírva az ott szereplő rövid kódrészletet.

A futtatáshoz pedig: Fejlesztőeszközök, Makró, Indítás gomb.