Makro to w przypadku Excela bardzo często pojawiające się słowo, szczególnie na wyższych poziomach znajomości programu. Mówiąc najprościej, makro jest mini-programem zapisanym w języku programowania VBA, który służy najczęściej do automatyzowania czynności, które wykonujemy w Excelu, ale nie tylko. Za pomocą makr możemy tworzyć również funkcje użytkownika, które potem da się wykorzystać w arkuszu Excela. W tym artykule skupimy się jednak na pierwszej możliwości.
Za pomocą makr możemy sprowadzić wykonywanie szeregu żmudnych i powtarzalnych czynności do jednego kliknięcia przycisku lub skrótu klawiszowego. Jeśli w pracy często wykonujemy szereg takich samych operacji na jakichś danych to prawie na pewno uda nam się takie operacje zautomatyzować, właśnie za pomocą makra. Oczywiście dobrze byłoby, aby makro potrafiło wykonać się nie tylko na naszych danych tu i teraz, ale również w przyszłości, jeśli układ danych ulegnie niewielkiej zmianie czy po prostu danych będzie więcej/mniej.
Projektując makro musimy więc myśleć uniwersalnie, to znaczy stosować polecenia dające się zastosować na wielu arkuszach, a nie tylko naszym jedynym, w tej konkretnej sytuacji. Wszystko to sprowadza się do konkluzji, że zanim zainteresujemy się na dobre makrami warto najpierw dobrze poznać budowę i możliwości samego Excela.
Przed chwilą wspomnieliśmy, że makra są zapisane w języku programowania VBA, co jest prawdą, ale żeby z nich korzystać, czy je tworzyć, wcale tego języka nie trzeba znać. Microsoft oferuje nam nagrywarkę makr, która potrafi szereg naszych czynności „wyklikanych” w programie przenieść na kod napisany w języku VBA (ang. Visual Basic for Application). Żeby jednak korzystać z makr warto mieć na Wstążce włączoną kartę Deweloper. Jej pokazanie to bardzo prosta sprawa, wystarczy kliknąć prawym przyciskiem myszki na którejkolwiek z kart, wybrać z listy przycisk Dostosuj Wstążkę, a w oknie, które nam się otworzy trzeba zaznaczyć na liście kartę z nazwą Deweloper. Od tej pory będzie ona widniała w Excelu na stałe.
Dzięki karcie Deweloper mamy szybki dostęp do narzędzi przydatnych w pracy z makrami. Widnieje tam oczywiście przycisk Zarejestruj makro, który otworzy nam okienko rejestratora. Podamy w nim nazwę makra np. Formatowanie_komorek, klawisz skrótu jeśli chcemy, lokalizację makra, a także opis (nieobowiązkowe). Po kliknięciu OK rozpocznie się nagrywanie – od tej pory każdy wykonany ruch w Excelu zostanie nagrany i przetłumaczony na język VBA.
Dla przykładu stworzymy krótkie makro formatujące komórki w następujący sposób:
Poniżej możemy zaobserwować jak konkretne polecenia wydawane myszką zostają przetłumaczone na język VBA.
Używanie rejestratora ma tę zaletę, że nie trzeba znać języka VBA, aby stworzyć makro, ale ma też swoje ograniczenia. Pierwszym z nich jest to, że nie każdą czynność w Excelu da się nagrać, drugą to, że nagrywanie nawet bardzo prostych czynności generuje duże ilości kodu, co mocno wpływa na czytelność i szybkość działania programu.
Pisząc ręcznie polecenia w VBA otrzymamy dużo bardziej czytelny kod, zajmujący mniej miejsca, wykonujący się szybciej i nie ograniczamy się tylko do rzeczy, które da się „wyklikać” w programie. Pisząc makra ręcznie naszym jedynym ograniczeniem jest nasza głowa i znajomość języka VBA.
Gdy napiszemy lub nagramy jakieś makro chcemy później z niego skorzystać. Standardową opcją jest wybranie makra z listy dostępnych makr. Aby wyświetlić okno z makrami wystarczy przejść na kartę Deweloper, kliknąć przycisk Makra i wybrać dowolne z nich. To co możemy z makrami zrobić to je uruchomić (czyli wykonać nagrane operacje), edytować (wtedy przejdziemy do edytora kodu), usunąć lub ustawić przycisk skrótu klawiszowego (przycisk Opcje) jeśli wcześniej tego nie zrobiliśmy. Pod spodem przykład uruchomienia przed chwilą nagranego makra.
Jak widać na powyższym przykładzie makro automatyzuje pracę, czyli wykonuje kilka czynności, krok po kroku, dużo szybciej niż byśmy wykonali to ręcznie.
Inne metody uruchamiania makr to np. podłączenie się pod skrót klawiszowy, podpięcie pod dedykowany przycisk, który możemy narysować w programie lub makro może być uruchamiane np. po kliknięciu w obrazek.
Te kilka kroków, które wykonało nam makro przed chwilą wydarzyło się stosunkowo szybko. Ale czy da się szybciej? Oczywiście, że tak! Nasz przykład jest bardzo prosty, przyspieszył wykonanie kilku banalnych czynności, mimo to zarejestrowano wiele linijek kodu. Makro działa w ten sposób, że każda linijka kodu jest wykonywana w kolejności od góry do dołu. Każda linia ma znaczenie i wpływa na wydajność. Szybko możemy się zorientować, że nagrywanie bardziej złożonych czynności spowoduje wielokrotne zwiększenie kodu. Aby tego uniknąć kod należy optymalizować, czyli wyrzucać z niego aktualnie niepotrzebne nam linie. Poniżej przykład tego samego makra, ale zoptymalizowanego tylko i wyłącznie do niezbędnego minimum – wyrzucone zostały linie kodu, które się nagrały, ale nie wpływały na działanie naszego makra.
Czy makra to same zalety? Jak każda rzecz na świecie makra mają swoje plusy (przyspieszenie pracy, automatyzacja, wykonywanie rzeczy niemożliwych do wykonania z poziomu Excela), ale też i minusy. Do tych drugich zaliczają się natomiast ryzyka związane z bezpieczeństwem.
Makra to takie mini programy, które potrafią uruchamiać kod. Niestety nie zawsze kod, który ktoś stworzy ma na celu pomóc nam rozwiązać jakiś problem czy ułatwić pracę. Zdarza się, że użytkownicy tworzą złośliwy kod, który potrafi zainfekować nasz komputer poprzez połączenie się ze stroną internetową i pobranie złośliwego pliku. Za pomocą makra można też usuwać pliki z komputera czy spowodować jego wyłączenie. Warto więc do kwestii makr podchodzić z rozsądkiem, szczególnie jeśli pobieramy plik Excela z internetu i zawiera on makra – jeśli nie jesteśmy pewni, że źródło z którego pobieramy plik jest prawdziwe i zaufane – lepiej takiego pliku nie otwierać, ponieważ kod wykonuje się na tyle szybko, że jeśli będzie złośliwy, to prawdopodobnie i tak nie zdążymy zareagować zanim się on wykona.
Microsoft jest oczywiście świadomy tych zagrożeń dlatego zaleca nam nie włączać zawartości w plikach pobranych z internetu, mamy również specjalne rozszerzenia plików, które informują nas o tym z czym możemy mieć do czynienia. Jeśli spotkamy się z plikiem o rozszerzeniu .xls lub .xlsm to powinniśmy mieć podejrzenie, że w środku może (aczkolwiek nie musi) znajdować się makro. Plik .xls jest starszym formatem, plik .xlsm nowszym – oba pozwalają przechowywać w sobie makra. Jeśli spotkamy się z formatem .xlsx to mamy pewność, że w środku nie znajduje się makro.
Oczywiście, że warto się uczyć, ale trzeba robić to z głową. Dobrą podstawą do wejścia w świat makr i VBA jest najpierw porządne zrozumienie zasad działania programu i funkcjonalności jakie posiada sam Excel. Kiedyś makra były najczęściej wykorzystywane w celu stworzenia sobie narzędzi do pracy z danymi, bo Excel takich nie oferował. Aktualnie program zawiera bardzo dużo narzędzi, co chwilę pojawiają się nowe funkcje, mamy też dodatki takie jak Power Pivot czy Power Query, które diametralnie zmieniają pracę z dużymi zestawami danych. Najlepszym wyjściem jest najpierw zapoznać się z tymi narzędziami i tym co oferuje Excel, a dopiero na końcu zainteresować się makrami, gdyż może się okazać, że to co chcemy osiągnąć już zostało przez kogoś wymyślone i zaimplementowane w Excelu jako narzędzie – a tutaj trzeba zaznaczyć, że gotowe narzędzie w Excelu zawsze zadziała szybciej, niż nawet najlepiej napisane i zoptymalizowane makro.