piątek, 18 kwietnia 2014

VBScript vs. VBA w teorii i przykładach (3/3)

Trzeci wpis poświęcony pracy z językiem skryptowym VBScript dotyczyć będzie analizy konkretnego przykładu. Zacznijmy więc od opisu samego problemu...

W czasie prowadzonych szkoleń z zakresu VBA dla Excela czasem słyszę pytanie dot. możliwości uruchomienia określonego makra o określonej godzinie. Jedną z technik pozwalającą na wykonanie takiej operacji jest wykorzystanie instrukcji Application.OnTime. Warunek- aplikacja Excela musi pozostać uruchomiona do godziny, o której makro ma być uruchomione. Co jednak zrobić w sytuacji gdy Excel jest wyłączony? Co zrobić jeżeli chcemy uruchomić makro VBA dla aplikacji MS Word lub MS PowerPoint w sytuacji, gdy obie te aplikacje nie dysponują instrukcją Application.OnTime? W każdym z tych wariantów możemy sięgnąć po systemowego Menadżera Zadań i skrypt VBS. Prześledźmy kolejne niezbędne działania.

Krok 1. Utwórzmy testowy plik XLSM z dwoma prostymi makrami, które umożliwią nam wykonanie testu także w wariancie z przekazaniem parametru do wywoływanego makra.

1Sub VBS_Test()
2    MsgBox "Wywołanie z poziomu VBS o godzinie: " & Time
3End Sub
4 
5Sub VBS_Test_Arg(Parametr)
6    MsgBox "Wywołanie z poziomu VBS z parametrem: " & Parametr
7End Sub

Krok 2. Tworzymy skrypt VBS i zapisujemy go w pliku z takim właśnie rozszerzeniem. Poniżej przykładowy kod wraz z komentarzami wyjaśniającymi poszczególne operację. Proszę zwrócić uwagę na olbrzymie podobieństwo do języka VBA.
01'tworzymy zmienną reprezentującą aplikacje Excela
02    dim EXL
03'uruchamiamy instancję Ecxcela
04    set EXL = CreateObject("Excel.Application")
05'opcjonalnie wyświetlamy aplikację-
06'krok nie jest wymagany jeżeli makro ma działać w tle
07    EXL.Visible = true
08 
09'otwieramy skoroszyt z uprzednio utworzonymi makrami
10    EXL.Workbooks.Open "c:\PROJEKT VBA\SZKOLENIA\VBS_Test_Arg.xlsm"
11'wywołujemy pierwsze makro bez parametru
12    EXL.Run "VBS_Test"
13'wywołujemy drugie makro z przekazaniem parametrem
14    EXL.Run "VBS_Test_Arg", "Tekst do przekazania"
15 
16'opcjonalnie wyłączamy aplikację i niszczymy naszą zmienną
17    EXL.Quit
18    Set EXL = Nothing

Krok 3. Pozostało nam już tylko powiązać nasz skrypt z godziną wywołania wykorzystując do tego celu systemowego Menadżera Zadań.

  • uruchamiamy Menadżera Zadań z Menu >> Programy >> Akcesoria >>Narzędzia systemowe >> Harmonogram zadań (dla Windows 7)
  • tworzymy nowe zadanie wskazując jako akcję do wykonania nasz utworzony plik VBS (poniżej odpowiednie okno prezentujące ten krok) i ustawiamy wszystkie niezbędne parametry zgodnie z kreatorem tworzenia zadań
    (operacja ta jest relatywnie łatwa i intuicyjna więc nie będę poświęcał jej więcej czasu)








O określonej godzinie, zgodnie z parametrami ustawionymi w systemowym Harmonogramie Zadań, uruchomiony zostanie skrypt VBS. W wyniku jego działania otwarta zostanie nowa instancja Excela i wywołane zostaną dwa makra. Po zakończeniu pracy makr zakończony zostanie także skrypt VBA w wyniku czego Excel zostanie zamknięty.

Brak komentarzy:

Prześlij komentarz