Wojciech Gardziński, Krzysztof Rumiński

 

W dzisiejszym odcinku, już jako nieco doświadczeni programiści VBA, zajmiemy się publikacją naszych programów i funkcji.

 

{publikacja programu} Naszym celem dzisiaj, będzie stworzenie programu i umożliwienie używania go przez naszych kolegów z biura.

 

Wykorzystajmy kod, który powstał podczas lektury poprzedniego odcinka kursu. Przypomnijmy go (W arkuszu Excela naciskamy [Alt+F11], następnie wybieramy z menu Edytora VBA: Insert / Module). W oknie modułu mamy już lub wpisujemy od nowa:

 

Sub Makro1()

    With Selection.Font

        .FontStyle = "Pogrubiony"

        .Strikethrough = True

    End With

End Sub

 

Sub MojePierwszeNapisaneMakro()

MsgBox ("Witaj Świecie!")

End Sub

 

Function Kwadrat(Liczba As Double) As Double

    Kwadrat = Liczba * Liczba

End Function

 

Function KorektaBłędu(Arg As Variant, Optional TekstBłędu As String) As Variant

    If IsError(Arg) Then

        KorektaBłędu = TekstBłędu

    Else

        KorektaBłędu = Arg

    End If

End Function

 

Sprawdźmy jeszcze raz działanie naszych procedur i funkcji i, gdy działają (Funkcje wpisujemy z Kreatora funkcji – grupa funkcji Użytkownika, procedury uruchamiamy przez [Alt+F8]), przejdźmy dalej.

W chwili obecnej, nasz program (kod w module VBA) jest podpięty pod arkusz Excela. Gdy arkusz zamkniemy (pamiętajmy o zachowaniu go, pomimo tego, że arkusz jest czysty, np. w pliku KursGP-VBA3.xls), Excel funkcji widzieć już nie będzie. Co i jak zrobić, żeby one jednak cały czas były dostępne w naszym Excelu? Można to zrobić na kilka sposobów:

 

1. Gdy uruchamiamy Excela, zawsze otwieramy plik KursGP-VBA3.xls.

 

2. Uruchamiamy Excela, otwierając nie samego Excela, tylko plik KursGP-VBA3.xls, umieszczony na pulpicie - Excel otwiera się wtedy automatycznie.

 

3. Umieszczamy plik KursGP-VBA3.xls w katalogu C:\Documents and Settings\WojciechG\Dane aplikacji\Microsoft\Excel\XLSTART (oczywiście ścieżka jest u Państwa nieco inna, zależna od nazwy Użytkownika) lub w dowolnym innym katalogu plików startowych Excela – można go określić poprzez Narzędzia / Opcje / karta: Ogólne / określić: Inne położenie plików startowych. Wtedy Excel, uruchamiając się, otwiera wszystkie skoroszyty tam umieszczone, więc i nasz. Gdy nasze makra nagramy (jest taka opcja na początku Rejestratora makr) do pliku Personal.xls, Excel sam umieści go w domyślnym katalogu plików startowych XLStart.

 

4. Tworzymy tzw. Dodatek Excela (ang. Add-In) poprzez zapis naszego skoroszytu jako typ pliku Dodatek Microsoft Excel (*.xla). Excel wtedy sam zapisuje go do specjalnie w tym celu wydzielonego katalogu AddIns (C:\Documents and Settings\WojciechG\Dane aplikacji\Microsoft\AddIns)

Gdy dodatek jest utworzony, możemy go zarejestrować, jako aktywny (tj. wgrywany przy starcie Excela) dodatek poprzez: Narzędzia / Dodatki / opcja: Przeglądaj / wskazujemy: Kursgp-vba3 i potwierdzamy.

 

Rys.1. Rejestrowanie naszego dodatku w Oknie Dodatki.

 

Dodatek zarejestrowany, jego funkcje i procedury, dostępne są wtedy z poziomu arkusza (tj. w kreatorze funkcji) BEZ nazwy skoroszytu, zawierającego daną funkcję lub procedurę. To ważne, bo oznacza, że nasza funkcja dostępna jest zawsze, we wszystkich arkuszach w naszym Excelu.

 

5. Tworzymy dodatek jak wyżej, ale kopiujemy go z katalogu AddIns, wklejamy gdziekolwiek, np. na pulpit i stamtąd uruchamiamy, jak normalny plik Excela. Można go jednak skopiować też do katalogu …\XLStart i wtedy uruchamia się sam, przy starcie Excela.

 

Jak widać, istnieje duża ilość możliwości publikacji naszego programu, ponieważ można to zrobić na każdym komputerze, tzn. np. wgrać koledze do katalogu XLStart lub do katalogu AddIns i zarejestrować jak wyżej.

 

{alternatywne sposoby uruchamiania makr}

Ważnym aspektem programowania i udostępniania programów innym użytkownikom, jest określenie sposobu, ale też ułatwienie, uruchamiania tych makr. Nie wszyscy chcą uruchamiać nasze makra poprzez Narzędzia / Makro / Makra (lub [Alt+F8]) itp., szczególnie, że w przypadku procedur (nie dotyczy funkcji), zapisanych w dodatkach, NIE SĄ one widoczne w oknie Makra i nie można ich stamtąd bezpośrednio uruchomić. Jak więc ułatwić uruchamianie naszych procedur przez innych użytkowników? Sposobów jest znowu kilka:

 

  1. Z menu lub skrótem klawiszowym (opisane powyżej)
  2. Poprzez podpięcie makra pod jakiś obiekt w arkuszu

Z menu Wstaw / Rysunek / Z pliku… wybieramy dowolny plik graficzny i wstawiamy go do arkusza. Następnie klikamy na nim prawym przyciskiem myszy i wybieramy Przypisz makro – wskazujemy nasze makro.

 

Rys. 3. Podpinanie makra pod obiekt w arkuszu

 

 

  1. Poprzez podpięcie makra pod ikonkę własnego paska narzędzi

Tworzymy własny pasek narzędzi: Narzędzia / Dostosuj / karta: Paski narzędzi / opcja: Nowy (tu nadajemy nazwę), tworzymy własną ikonkę paska narzędzi: Narzędzia / Dostosuj / karta: Polecenia / pozycja: makra (tu przeciągamy ikonkę - uśmiechniętą buźkę z pola Polecenia na nasz pasek narzędzi). Kolejny krok jest podobny do opisanego powyżej – pod prawym przyciskiem myszy na nowym narzędziu, znajduje się opcja Przypisz makro, itd. Dopiero po tym kroku zamykamy okno Dostosuj i umieszczamy pasek w żądanym miejscu

 

  1. Poprzez ustawienie danej procedury jako samouruchamiającej się przy otworzeniu skoroszytu, tj. nadanie nazwy „Auto_Open” dla danego makra.

To zadanie najłatwiejsze. Zmieniamy po prostu nazwę makra MojePierwszeNapisaneMakro na Auto_Open i skoroszyt, otwierany, wyświetlać nam będzie komunikat „Witaj Świecie!”

 

  1. Poprzez dodatkowe oprogramowanie „zdarzenia”, np. dwukrotnego kliknięcia, przeliczenia arkusza, otworzenia skoroszytu, uaktywnienie okna arkusza. Tu: przykład, oprogramowujący dwukrotne kliknięcie na arkuszu.

 

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    ‘ tu wpisujemy nasz program

End Sub

 

Jeżeli natomiast chcemy, aby dwukrotne kliknięcie gdziekolwiek uruchamiało nam procedurę, powinniśmy makro, obsługujące zdarzenie „dwuklik” umieścić np. w Dodatku Excela (opisane powyżej).

 

 

 

{okno Edytora VBA} Przyjrzyjmy się teraz oknu Edytora VBA

 

Rys. 4. Okno Edytora VBA

 

Po lewej, u góry, okno Project – VBAProject. Okno to służy do strukturalizacji naszych projektów-programów (modułów) – może ich być bowiem wiele, poza tym możemy tworzyć formularze, klasy, importować i eksportować nasze programy (wszystko pod prawym przyciskiem myszy – ale to już wyższy poziom wtajemniczenia). W jednym module może być wiele procedur i funkcji.

Po lewej, na dole, okno właściwości Properties – przydatne, tu np. zmieniamy nazwę naszego modułu, ale też ustawiamy właściwości wszystkich obiektów, jakie znajdują się lub znajdować się będą w naszych programach.

 

Po prawej wreszcie, okno procedur (tu jest nasz program). Na zielono, z apostrofem na początku – komentarze, nie wpływają na działanie programu.

Klauzula Sub oznacza początek, End Sub koniec procedury.

 

Przyjemnego i efektywnego programowania!