Makra Excel to zapisane sekwencje czynności, które wykonujesz w arkuszu — Excel może je odtworzyć automatycznie jednym kliknięciem. Technicznie makra to kod napisany w języku VBA (Visual Basic for Applications) wbudowanym w każdą wersję Excela (Microsoft 365, Excel 2024, Excel 2021), a rozpoczęcie przygody z automatyzacją nie wymaga ani linii programowania: wystarczy włączyć nagrywanie i wykonać czynności ręcznie.
W skrócie — 3 kroki do pierwszego makra
- Włącz kartę Deweloper — Plik → Opcje → Dostosowywanie wstążki → zaznacz „Deweloper” → OK
- Nagraj makro — Deweloper → Nagraj makro → nazwij je (bez spacji, np.
FormatujRaport) → wykonaj czynności → Zatrzymaj nagrywanie- Uruchom — Deweloper → Makra → wybierz makro → Uruchom (lub
Alt + F8i Enter)VBA nie został zastąpiony przez Office Scripts — w 2026 roku obie technologie współistnieją: VBA to dojrzałe, lokalne rozwiązanie dla komputerów stacjonarnych, a Office Scripts (TypeScript) rozszerza automatyzację na Excela w przeglądarce i Power Automate.
Czym są makra i VBA — definicja dla początkującego
Makro to nagrana i zapisana sekwencja poleceń wykonywanych w Excelu. Gdy nagrywasz makro, Excel tłumaczy każdy Twój ruch (kliknięcie w komórkę, zmianę formatowania, wprowadzenie formuły) na kod VBA (Visual Basic for Applications) — uproszczony dialekt języka Visual Basic osadzony we wszystkich aplikacjach Microsoft Office.
VBA to pełnoprawny język programowania z pętlami, warunkami (If...Then...Else), zmiennymi i obsługą błędów. Dla początkującego kluczowe jest jednak to, że nie musisz znać VBA, aby korzystać z makr — rejestrator makr wygeneruje kod za Ciebie. Możesz go potem przejrzeć i stopniowo uczyć się edytować.
VBA vs Office Scripts — co wybrać w 2026?
| Cecha | VBA (makra) | Office Scripts |
|---|---|---|
| Środowisko | Excel desktop (Windows, Mac) | Excel w przeglądarce (Web) + desktop |
| Język | Visual Basic for Applications | TypeScript |
| Nagrywanie | ✅ Rejestrator makr | ✅ Rejestrator akcji |
| Edytor kodu | Visual Basic Editor (VBE, Alt + F11) | Code Editor w przeglądarce |
| Działa offline | ✅ Tak (lokalnie) | ❌ Wymaga połączenia |
| Power Automate | ⚠️ Ograniczone wsparcie | ✅ Natywne |
| Dojrzałość ekosystemu | 30+ lat, ogromna społeczność | Wprowadzone w 2020, wciąż rozwijane |
| Format pliku | .xlsm, .xlsb | Zapisane w OneDrive |
| Kiedy użyć | Zaawansowana automatyzacja desktop, integracja między Office, legacy systemy | Automatyzacja w chmurze, współdzielenie skryptów, przepływy Power Automate |
⚠ Ważne: Microsoft potwierdził, że VBA nie jest wycofywane. Office Scripts to rozszerzenie możliwości dla środowiska webowego, a nie następca VBA. Jeśli pracujesz w Excelu desktopowym — VBA pozostaje podstawowym narzędziem automatyzacji.
Jak przygotować Excela do pracy z makrami
Krok 1. Włącz kartę Deweloper
Karta Deweloper (Developer) jest domyślnie ukryta — zawiera przyciski do nagrywania makr, edytora VBA i kontrolek formularza.
- Kliknij Plik → Opcje
- Wybierz Dostosowywanie wstążki
- W prawej kolumnie („Karty główne") zaznacz checkbox Deweloper
- Kliknij OK
W Excelu dla Mac: Excel → Preferencje → Wstążka i pasek narzędzi → zaznacz „Deweloper".
Krok 2. Dostosuj ustawienia makr (Centrum zaufania)
Domyślnie Excel blokuje makra z powodów bezpieczeństwa. Aby makra działały:
- Plik → Opcje → Centrum zaufania → Ustawienia Centrum zaufania
- Wybierz Ustawienia makr
- Zaznacz „Wyłącz wszystkie makra z powiadomieniem" ⭐ (najbezpieczniejsza opcja — Excel zapyta za każdym razem o zgodę na uruchomienie)
- Alternatywnie: „Włącz wszystkie makra" tylko jeśli ufasz źródłu plików (niezalecane dla plików z internetu)
Krok 3. Zapisz plik w formacie obsługującym makra
Standardowy format .xlsx nie zapisuje makr. Jeśli nagrasz makro w pliku .xlsx i zapiszesz, Excel ostrzeże Cię, że makra zostaną usunięte. Zawsze zapisuj pliki z makrami jako:
.xlsm— Skoroszyt programu Excel z obsługą makr (zalecane).xlsb— Binarny skoroszyt programu Excel (większe pliki, szybszy odczyt)
Plik → Zapisz jako → wybierz typ „Skoroszyt programu Excel z obsługą makr (*.xlsm)".
Pierwsze makro — nagrywanie krok po kroku
Załóżmy, że codziennie otrzymujesz raport, w którym musisz: scalić kolumny A1:C1 i wpisać tytuł, pogrubić nagłówki w wierszu 2, autodopasować szerokość kolumn i pokolorować wiersz nagłówka na niebiesko. Zamiast klikać ręcznie, nagraj to raz jako makro.
Instrukcja nagrywania
- Otwórz nowy plik Excela, zapisz jako
Raport.xlsm - Przejdź do karty Deweloper → kliknij Nagraj makro
- W oknie dialogowym:
- Nazwa makra:
FormatujRaportDzienny(bez spacji, zaczyna się od litery) - Klawisz skrótu: np.
Ctrl + Shift + F(unikajCtrl + C,Ctrl + V— nadpiszesz standardowe skróty) - Przechowuj makro w: Ten skoroszyt (lub „Skoroszyt makr osobistych", jeśli chcesz używać go we wszystkich plikach)
- Opis: „Formatuje dzienny raport: tytuł, nagłówki, autodopasowanie kolumn"
- Nazwa makra:
- Kliknij OK — nagrywanie jest aktywne (przycisk zmienia się na „Zatrzymaj nagrywanie")
- Wykonaj czynności:
- Zaznacz A1:C1 → Scal i wyśrodkuj → wpisz „Raport dzienny"
- Zaznacz wiersz 2 → Pogrubienie (
Ctrl + B) → kolor tła niebieski, czcionka biała - Zaznacz wszystkie kolumny → kliknij dwukrotnie na granicy nagłówka kolumny (autodopasowanie)
- Kliknij Zatrzymaj nagrywanie (lub
Alt + T + M + R)
Gotowe! Twoje pierwsze makro jest zapisane. Aby je przetestować: otwórz nowy arkusz, wypełnij go dowolnymi danymi i uruchom makro przez Deweloper → Makra → FormatujRaportDzienny → Uruchom.
Jak zobaczyć i zrozumieć kod VBA
Nagrane makro to tak naprawdę kod VBA, który możesz zobaczyć i edytować:
- Kliknij Deweloper → Visual Basic (lub
Alt + F11) — otworzy się edytor VBA - W lewym panelu (Project Explorer) rozwiń VBAProject (Raport.xlsm) → Moduły → kliknij dwukrotnie Module1
- Zobaczysz kod podobny do:
Sub FormatujRaportDzienny()
'
' FormatujRaportDzienny Makro
' Formatuje dzienny raport: tytuł, nagłówki, autodopasowanie kolumn
'
Range("A1:C1").Select
Selection.Merge
ActiveCell.FormulaR1C1 = "Raport dzienny"
Rows("2:2").Select
Selection.Font.Bold = True
With Selection.Interior
.Pattern = xlSolid
.Color = 12611584
End With
Selection.Font.Color = vbWhite
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select
End Sub
Co oznaczają poszczególne elementy:
Sub FormatujRaportDzienny()— deklaracja makra (początek procedury)- Linie z
'(apostrof) — komentarze, ignorowane przy uruchamianiu Range("A1:C1").Select— zaznacz zakres komórekSelection.Merge— scal zaznaczone komórkiActiveCell.FormulaR1C1 = "Raport dzienny"— wpisz tekst do aktywnej komórkiEnd Sub— koniec makra
Podstawowe pojęcia VBA, które warto poznać
| Pojęcie | Znaczenie | Przykład |
|---|---|---|
| Obiekt | Element Excela, na którym działasz | Range, Worksheet, Workbook |
| Właściwość (Property) | Cecha obiektu | Font.Bold, Interior.Color |
| Metoda (Method) | Czynność wykonywana na obiekcie | .Select, .Copy, .AutoFit |
| Zmienna | Pojemnik na dane (tekst, liczbę) | Dim nazwa As String |
| Pętla | Wielokrotne wykonanie kodu | For i = 1 To 10 ... Next i |
| Warunek | Wykonaj kod tylko jeśli warunek spełniony | If Range("A1").Value > 0 Then... |
Praktyczne przykłady makr dla początkujących
Przykład 1. Makro z pętlą — automatyczne numerowanie wierszy
Sub NumerujWiersze()
Dim i As Integer
For i = 2 To 101
Range("A" & i).Value = i - 1
Next i
End Sub
Wpisuje liczby od 1 do 100 w kolumnie A. Zmienna i przyjmuje kolejne wartości od 2 do 101, a Range("A" & i) tworzy adresy A2, A3… A101.
Przykład 2. Makro z warunkiem — wyróżnij komórki powyżej wartości progowej
Sub WyroznijPowyzejProgu()
Dim komorka As Range
For Each komorka In Selection
If IsNumeric(komorka.Value) And komorka.Value > 1000 Then
komorka.Interior.Color = vbYellow
End If
Next komorka
End Sub
Zaznacz zakres → uruchom makro → wszystkie komórki z liczbą > 1000 zostaną podświetlone na żółto.
Przykład 3. Makro z komunikatem (MsgBox)
Sub Przywitanie()
Dim imie As String
imie = InputBox("Jak masz na imię?")
MsgBox "Cześć, " & imie & "! Twoje makro działa poprawnie."
End Sub
InputBox pobiera dane od użytkownika, MsgBox wyświetla okno komunikatu.
Najczęstsze problemy i ich rozwiązania
„Mam włączone makra, ale przycisk Nagraj makro jest szary"
Prawdopodobnie otworzyłeś plik w widoku chronionym (Protected View) — Excel blokuje edycję i makra w plikach pobranych z internetu. Kliknij żółty pasek u góry: „Włącz edycję". Jeśli problem wciąż występuje, sprawdź, czy plik nie jest zapisany w formacie .xlsx (bez obsługi makr).
„Excel wyświetla błąd: Nie można uruchomić makra. Makro mogło być niedostępne"
Najczęstsze przyczyny:
- Plik jest zapisany jako
.xlsxzamiast.xlsm— zapisz ponownie w formacie z obsługą makr. - Makro znajduje się w innym skoroszycie niż ten, z którego próbujesz je uruchomić.
- Makro zostało zapisane w module arkusza (
Sheet1) zamiast w module ogólnym (Module1) — makra zapisane w module arkusza są prywatne dla tego arkusza.
„Nagrane makro nie działa na nowych danych"
Rejestrator makr zapisuje bezwzględne odwołania do komórek (np. zawsze A1:C1). Jeśli dane zmieniają rozmiar, makro może działać nieprawidłowo. Rozwiązania:
- Użyj odwołań względnych: przed nagrywaniem kliknij Deweloper → Użyj odwołań względnych — makro będzie działać względem aktywnej komórki, a nie konkretnych współrzędnych.
- Ręcznie zmodyfikuj kod, aby używał
UsedRangelubCurrentRegionzamiast stałych adresów.
„Nie mogę zapisać pliku z makrami — Excel usuwa kod VBA"
Excel automatycznie usuwa kod VBA z plików .xlsx. Rozwiązanie: Plik → Zapisz jako → typ pliku: „Skoroszyt programu Excel z obsługą makr (*.xlsm)". Jeśli komunikat powtarza się, sprawdź, czy przypadkowo nie zapisujesz w folderze tymczasowym lub sieciowym z ograniczeniami.
„VBA Editor wyświetla błąd składni: „Oczekiwano: wyrażenie" (Compile error)"
To błąd składni — prawdopodobnie literówka w nazwie właściwości lub metody. Kliknij Debug — edytor podświetli problematyczną linię na żółto. Najczęściej: brak cudzysłowów wokół tekstu (powinno być "tekst", nie 'tekst') lub literówka (np. Range zamiast Range). Popraw i naciśnij zieloną strzałkę „Run", aby kontynuować.
Częste pytania
Czy makra w Excelu są bezpieczne?
Makra mogą przenosić złośliwy kod, dlatego Excel domyślnie je blokuje. Pliki .xlsm z makrami pobrane z internetu otwierają się w widoku chronionym. Bezpieczne praktyki: (1) uruchamiaj makra tylko z zaufanych źródeł, (2) przed uruchomieniem przejrzyj kod w edytorze VBA (Alt + F11), (3) nie włączaj globalnie opcji „Włącz wszystkie makra". Jeśli tworzysz własne makra, są one całkowicie bezpieczne.
Czy makra działają w Excelu na Mac?
Tak, Microsoft Excel dla Mac obsługuje VBA i rejestrator makr — funkcjonalność jest bardzo zbliżona do wersji Windows. Jednak niektóre zaawansowane funkcje (ActiveX, niektóre odwołania do API Windows) mogą nie działać lub działać inaczej. Samo nagrywanie makr, edytor VBA i podstawowe automatyzacje działają identycznie.
Czy muszę znać programowanie, żeby używać makr?
Nie. Rejestrator makr (Deweloper → Nagraj makro) generuje cały kod automatycznie — wystarczy wykonywać czynności w Excelu, a zostaną one zapisane jako makro. Znajomość VBA przydaje się, gdy chcesz edytować nagrane makro, dodać warunki, pętle lub poprawić wydajność — ale możesz zacząć od zera programistycznego doświadczenia i uczyć się stopniowo, czytając wygenerowany kod.
Jaka jest różnica między makrem a formułą w Excelu?
Formuła (np. =SUMA(A1:A10)) to pojedyncze obliczenie wpisane bezpośrednio w komórkę — przelicza się automatycznie przy każdej zmianie danych. Makro to zapisana sekwencja wielu czynności (formatowanie, kopiowanie, scalanie, wysyłanie maila), którą uruchamiasz ręcznie lub przez zdarzenie (np. otwarcie pliku). Formuły są deklaratywne („co ma być wynikiem"), makra są imperatywne („zrób krok 1, potem krok 2...").
Czy makra działają w Excel Online (przeglądarka)?
Nie — VBA i klasyczne makra nie są obsługiwane w Excelu w przeglądarce. W Excel Online używa się Office Scripts (TypeScript), które pełnią podobną rolę automatyzacji, ale są zapisywane w OneDrive i zintegrowane z Power Automate. Jeśli potrzebujesz automatyzacji wyłącznie w przeglądarce, Office Scripts to właściwe narzędzie. Jeśli pracujesz głównie w desktopowej wersji Excela — VBA pozostaje standardem.
Jak przypisać makro do przycisku na arkuszu?
- Karta Deweloper → Wstaw → wybierz Przycisk (kontrolka formularza)
- Narysuj przycisk na arkuszu — automatycznie pojawi się okno „Przypisz makro"
- Wybierz swoje makro z listy → OK
- Kliknij prawym przycisk na przycisku, aby zmienić jego tekst
Od teraz jedno kliknięcie na przycisku uruchomi Twoje makro — idealne rozwiązanie, gdy przygotowujesz arkusz dla innych użytkowników.
Czy mogę wycofać makro po uruchomieniu (Ctrl+Z)?
Nie. Makra nie obsługują cofania (Ctrl + Z). Po uruchomieniu makra wszystkie zmiany są trwałe. Dlatego przed pierwszym uruchomieniem makra zawsze: (1) zapisz plik, (2) przetestuj makro na kopii danych. Jeśli makro zmieniło arkusz nieodwracalnie, zamknij plik bez zapisywania i otwórz ponownie — wrócisz do stanu sprzed uruchomienia.
Twoja przygoda z automatyzacją Excela dopiero się zaczyna
Nauka makr i VBA to inwestycja, która zwraca się już przy pierwszym zaoszczędzonym raporcie. Jeśli potrzebujesz Excela, który w pełni obsługuje VBA, makra i cały ekosystem automatyzacji — bez ograniczeń wersji Online czy subskrypcji — sprawdź legalne, jednorazowe klucze licencyjne w sklepie KluczeSoft:
→ Microsoft Office — klucze licencyjne od KluczeSoft — pełna wersja desktop z VBA, makrami i edytorem Visual Basic bez subskrypcji.