Makró futtatása Excelen kívülről - elmélkedés a lehetőségekről

2017. augusztus 10. - Office Guru

Nemrégiben jutott el hozzám egy elég gyakran felmerülő feladatra vonatkozó kérés-kérdés (automatikus levélküldés meghatározott időpontokban meghatározott e-mailcímekre), amelyre egy későbbi posztban majd ki fogok térni részletesen, most azonban a kérdés egyetlen részét fogom csak kiragadni, nevezetesen azt az igényt, hogy makrónk az Excel elindítása nélkül fusson le.

Tudomásom szerint csak VBA és Excel felhasználásával ez nem kivitelezhető (más eszközökkel persze van rá mód), valamilyen formában szükségünk van az Excel elindítására - aztán mondjuk a program elindulásával már azonnal futhat is a szükséges kis program.

Vagy készíthetünk egy egyszerű shortcutot is, ami az Excelünket és a makrónkat indítja el és ezt a shortcutot mondjuk Windows 7 vagy korábbi verzió esetén beillesztjük a Start menüből elérhető Startup könyvtárba, hogy kicsikarjuk a gép indulásakor az automatikus elindulást. Későbbi Windows esetén szimplán írjuk a Run ablakba a "shell:startup" parancsot és máris nagyjából ugyanott tartunk.

Van még egy elég gyakran használt és elterjedt metódus, ami viszont már nem szimplán Excel, hanem VBScript, amelyben .vbs kiterjesztéssel bíró programot tudunk készíteni - a VBScript nyelv a VB nyelv részhalmaza és ráadásul csak Windows rendszereken használható, ahol .vbs kiterjesztésű programjainkat viszont roppant könnyedén tudjuk futtatni.

Ezt fogjuk most is kihasználni, ugyanis egy egyszerű kis makrót bizonyos szempontból programként fogunk futtatni egy dupla kattintással, méghozzá a következő módon.

Van egy egyszerű kis kódunk, ami egy rövid üzenetet fog futása esetén kiírni a felhasználónak:

 

autom1.JPG

autom2.JPG

Ezt szépen elmentjük:

autom3.JPGEzután pedig létrehozunk Windows intézőben két kattintással egy pelda névre hallgató .vbs kiterjesztésű fájlt:

autom4.JPGEzt pedig a következő tartalommal kell feltöltenünk:

Set ObE = CreateObject("Excel.Application")
ObE.Application.Run "'C:\User\autom.xlsm'!Sheet1.Example"
ObE.DisplayAlerts = False
ObE.Application.Quit
Set ObE = Nothing

A sorok többségét már korábbi posztokban megismertük, de alapvetően az ObE változó egy új Excel "instance" elindulása lesz, amelyből futtatni fogjuk a Run metódussal a meghatározott helyen lévő fájlunk megfelelő sheetjén lévő megfelelő névre hallgató makrónkat. Ezután az Application.DisplayAlerts tulajdonságának kikapcsolásával mindenféle üzenetet kikapcsolunk, majd bezárjuk az Excelt és ki is ürítjük az ObE változót.

Ezután már csak dupla kattintás kell a .vbs kiterjesztésű fájlra és elindul egy Excel, lefut a definiált makró, majd bezárul az Excel. Egyszerű és hatásos, ráadásul rendkívüli módon elterjedt és ismert módszer.

A bejegyzés trackback címe:

http://officeguru.blog.hu/api/trackback/id/tr8112733896

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben.

Nincsenek hozzászólások.