Bármikor könnyedén előfordulhat egy feladat elvégzése során, hogy mondjuk a végeredményt egy WORD dokumentumban szeretnénk látni, akár például ügyfelenként, csapatonként, városonként, amit aztán természetesen publikálni, levélben küldeni is szeretnénk. A következő rövid kis posztban azt fogom megmutatni, hogyan tudunk a WORD szövegszerkesztőjén belülről makróval megnyitni más WORD dokumentumokat, azokban kicserélni részeket, majd újra lementeni őket - értelemszerűen a levélküldésről már volt párszor szó itt a blogon, úgyhogy az a lépés már tisztázott.
A mostani példánk első lépéseként a "mesterfájlunkba" szúrjunk be egy szimpla gombot a Ribbon Developer füle alatt található Controls szekcióból, amit aztán formázzunk meg kedvünk szerint:
Jobb gombbal kattintás után a View Code menü kiválasztásával a VBA-editorba jutunk, ahol a gombra kattintás eseményéhez fogunk egy kódot rendelni.
A már azért sokak által valószínűleg ismert Documents.Open metódussal kezdünk, amely után első és egyetlen kötelező paraméterként a FileName paramétert használjuk a fájlunk nevével és elérési útjával, ezzel fogjuk elérni a fájl megnyitását:
Ennek a metódusnak viszont van még jópár nem kötelező paramétere is, mint például a ReadOnly, ami lehetővé teszi, hogy írásvédettként nyithatjuk meg a fájlt, a Visible, ami lehetővé teszi, hogy úgy nyissuk meg a fájlt, hogy a képernyőn ne látszódjon vagy éppen a Revert, amivel azokat a helyzeteket tudjuk kezelni, ha már nyitva van egy ugyanilyen nevű fájlunk.
Ezután szimplán csak egy With...End With utasítást fogunk felhasználni, amelyen belül a Selection objektum Find tulajdonságát fogjuk paraméterezni. Alapesetben a Selection a szövegünk kijelölt részét jelenti, amennyiben pedig ilyen nincs, akkor egészen az insertion pontig (ez az a villogó karakterjel, ahol folytathatjuk gépelésünket) történő kijelölésként értelmezi. A Find tulajdonság pedig egy olyan objektumot ad vissza nekünk, amely keresésünk feltételeit tartalmazza.
Ahogy látható ebből a rövid kis kódrészletből, a Find objektumnak aztán van bőven tulajdonsága, a Text értelemszerűen megkeresi a Lafayette szócskát a szövegünkben, a Replacement.Text lecseréli ezt OfficeGurura, de hogy ez ténylegesen meg is történjen, az Execute metódust is használnunk kell, ami lefuttatja a keresési-cserélési műveletünket.
Ennek is van jópár paramétere, például a Replace paraméter azt határozza meg, hogy az összes találatot cserélje-e (wdReplaceAll) vagy sem vagy mondjuk a Forward, ami a keresést folytatja tovább a dokumentumban a következő találatig.
Aztán utolsó lépésként lementhetjük más néven a dokumentumunkat és be is zárjuk, mintha mi sem történt volna: