poniedziałek, 14 kwietnia 2014

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

Kontynuując opis języka VBScript chciałbym spojrzeć na wybrane podobieństwa i różnice pomiędzy tym językiem a VBA.

Zacznijmy może od zasadniczej różnicy- VBS nie działa w zamkniętym środowisku powiązanym z określoną aplikacją. Obszarem jego funkcjonowania jest, w naszym przypadku, system Windows, a podstawowym edytorem będzie zapewne zwykły notatnik. Pliki z kodem VBS są plikami tekstowymi, wykonywalnymi (z rozszerzeniem VBS). Język jest na tyle uniwersalny, że działa w środowisku Windows XP, Windows 7 czy też Windows 8.

Warto też zwrócić uwagę na wybrane cechy języka VBS, a w szczególności: problem ze stosowaniem polskich liter w nazwach własnych, brak profesjonalnego edytora, który ułatwiałby edycję kodu, dowolność stosowania wielkich i małych liter w procesie edycji skryptu.

A teraz zwróćmy uwagę na podobieństwa:

1. Każdy plik VBS tworzy niejako procedurę główną w ramach której mogą funkcjonować opcjonalnie podprogramy (Sub...End Sub) oraz funkcje (Function...End Function). Obie struktury wywołujemy zgodnie z technikami obowiązującymi w VBA.

2. Zmienne deklarujemy tymi samymi instrukcjami jak w języku VBA: Dim, Public, Private. Co ważne, nie deklarujemy typu zmiennej choć w procesie kompilacji każda zmienna jest przypisywana do określonego typu jaki znamy z VBA (Integer, Long, String, itp). Deklaracja zmiennych nie jest obowiązkowa, chyba że zastosujemy polecenie Option Explicit.

3. Możemy tworzyć tablice korzystając z funkcji Array oraz tablice dynamiczne. Funkcja ReDim funkcjonuje wg standardów znanych ze środowiska VBA.

4. Do dyspozycji mamy dziesiątki funkcji matematycznych, konwersji typów zmiennych, konwersji tekstu, daty, itp. W zdecydowanej większości są to funkcje znane ze środowiska VBA.

5. Istnieje możliwość stworzenia referencji do bibliotek innych aplikacji i wykonywanie operacji na strukturze obiektowej danej aplikacji. Do punktu tego zaliczę więc interakcję z aplikacjami pakietu Microsoft Office, możliwość zarządzania plikami dzięki bibliotece Microsoft Scripting Runtime, itp.

6. Do dyspozycji mamy kilka rodzai pętli (For...Next, For Each...Next, Do...Loop), instrukcje warunkowe (If...End If, Select Case...End Select).

7. W zakresie zaawansowanych technik możemy wykorzystać własne klasy, technikę pracy z wyrażeniami regularnymi RegEx czy też słownikiem Dictionary.

Wszystkich zainteresowanych szerszym zastosowaniem języka VBScript, w tym składnią oraz zestawem instrukcji i funkcji odsyłam do szeregu informacji znajdujących się w sieci. W szczególności zaś polecam następujące linki:
VBScript by MSDN
Microsoft Script Center

W następnym artykule zaprezentuję technikę, która pozwala na wywołanie makra stworzonego w VBA z poziomu języka VBScript. Dodatkowo działanie to wyzwolimy z poziomu Menadżera Zadań systemu Windows.

Na koniec chciałbym zademonstrować zestaw przykładowych instrukcji i działań jakie można wykonać z pomocą języka VBScript. Poniższy kod w całości proszę skopiować i zapisać w dowolnym pliku tekstowym z rozszerzeniem VBS. Następnie proszę uruchomić utworzony plik.
01'proszę zapisać cały skrypt w pliku *.vbs
02'następnie proszę zapisać i uruchomić
03msgbox "Witam w przykładowym skrypcie VBScript"
04 
05'funkcja
06function Test(a, b, h)
07    Test = 1/2 * (a+b) * h
08end function
09 
10'podprogram subprocedura
11sub Obliczenie_Pole_trapezu
12    'przykłady deklaracji zmiennych
13    dim A
14    dim B
15    dim C
16    A = 2:b = 2
17    'pobranie danych od użytkownika
18    c = inputbox("Podaj wysokość trapeza dla podstawy 2 i 2")
19    msgbox Test(a, b, c)
20    'pobranie informacji o typie zmiennej A
21    msgbox Typename(a)
22End sub
23 
24'podprogram ze parametrem wejściowym
25sub Praca_z_tekstem(Tekst)
26    msgbox "Tekst z wielkiej litery: " & ucase(tekst)
27end sub
28 
29'wywołanie funkcji
30    msgbox Test(2,3,4)
31'wywołanie sub-procedur
32    obliczenie_pole_trapezu
33'wywołanie sub-procedury z parametrem
34    praca_z_tekstem "to jest tekst przykładowy"
35'wywołanie sub-procedury (znajdującej się poniżej)
36    procedura_z_petla
37    
38'tablica dynamiczna
39    dim TBL()
40    Redim TBL(10)
41    TBL(0) = 100
42    TBL(1) = 200
43    'zwrócenie elementów tablicy
44    MsgBox Tbl(0) & " " & Tbl(1)
45 
46sub Procedura_z_Petla
47    dim i, txt
48    'prosta pętla For...Next
49    for i=1 to 10
50        txt = txt & chr(10) & i
51    next
52        
53    msgbox txt
54end sub

Brak komentarzy:

Prześlij komentarz