Przejdź do treści

Makra VBA na zlecenie w Excelu i Wordzie: nowe i naprawiane

W wielu firmach jeden skoroszyt z makrami trzyma ważny proces: raport, ofertę albo rozliczenie. Piszę nowe makra, naprawiam te, które przestały działać, i mówię wprost, kiedy lepiej przejść na coś innego.

Autor: Szymon Łakomy. Aktualizacja:

Kiedy makro VBA jest dobrym wyborem

  • Raport z kilku arkuszy lub plików. Makro zbiera dane z zakładek albo skoroszytów od oddziałów, ujednolica je i tworzy zestawienie z wykresem po jednym kliknięciu.
  • Dokumenty z danych. Oferty, umowy, protokoły i zaświadczenia generowane w Wordzie z wiersza w Excelu, z warunkami, których nie obsłuży zwykła korespondencja seryjna, i zapisem do PDF.
  • Porządkowanie danych. Usuwanie pustych wierszy, rozdzielanie kolumn, poprawianie formatów dat i kodów przed importem do programu.
  • Formularz do wprowadzania danych. Okno z polami i walidacją, żeby zespół nie wpisywał danych w przypadkowe komórki.
  • Eksport do innego programu. Zapis danych w pliku CSV lub XML w formacie, którego oczekuje program księgowy albo magazynowy.

Wspólny mianownik: praca dzieje się w jednym pliku, na komputerze z Windows i desktopowym Office, a z plikiem pracuje jedna osoba naraz.

Makro przestało działać: najczęstsze przyczyny

ObjawCzęsta przyczynaCo robię
czerwony pasek z informacją, że Microsoft zablokował makraplik pobrany z internetu lub z poczty ma oznaczenie niezaufanego źródłaodblokowanie we Właściwościach pliku albo zaufana lokalizacja w Centrum zaufania, a przy wielu osobach podpis makra
błąd przy wywołaniu funkcji systemowych po wymianie komputeraprzejście na 64-bitowy Office i stare deklaracje bez PtrSafepoprawiam deklaracje i sprawdzam typy zmiennych
makro liczy złe wartości albo kończy się błędem indeksuktoś dodał kolumnę albo zmienił nazwę arkusza, a kod odwołuje się do stałych adresówprzechodzę na tabele i nazwane zakresy, dodaję sprawdzenie układu pliku
błąd kompilacji zaraz po otwarciubrakujące odwołanie do biblioteki na innym komputerzeusuwam zbędne odwołania albo zamieniam je na późne wiązanie
makro nie działa w przeglądarce ani w TeamsExcel w przeglądarce nie uruchamia VBApraca w aplikacji desktopowej albo przeniesienie logiki do innego narzędzia

Część przyczyn to zmiany w samym Office, a nie błąd autora. Blokada makr z plików z internetu jest ustawieniem bezpieczeństwa i nie radzę jej wyłączać dla całej firmy.

Ograniczenia, o których mówię przed zleceniem

Jeden użytkownik naraz

Skoroszyt z makrami źle znosi równoczesną pracę kilku osób. Gdy plik krąży mailem w wersjach, łatwo o dwa różne stany danych.

Brak historii zmian

Kod żyje w pliku. Bez dodatkowej dyscypliny nie wiadomo, kto, kiedy i dlaczego coś zmienił, a kopia „raport_v7_ostateczny” nie zastąpi historii.

Bezpieczeństwo

Makra bywają drogą ataku, więc firmy słusznie je blokują. Każde makro z zewnątrz trzeba odblokować świadomie, a hasło na projekt VBA chroni słabo.

Zależność od Office na komputerze

Makra nie zadziałają w przeglądarce ani na telefonie, a na Macu część funkcji wymaga zmian.

Te ograniczenia nie przekreślają VBA. Oznaczają tylko, że makro to dobre narzędzie dla jednej osoby i jednego pliku, ale słaby fundament procesu całej firmy.

Jak wygląda zlecenie

  1. Przesyłasz plik z przykładowymi danymi, najlepiej zmienionymi tak, żeby nie było w nich danych klientów, i opis, co ma się dziać po kliknięciu.
  2. Oglądam plik i istniejący kod, ustalam zakres i podaję cenę. Proste makro albo naprawa zaczyna się od około 500 zł netto.
  3. Piszę lub poprawiam kod z komentarzami, obsługą błędów zamiast okna debugera i odwołaniami do tabel zamiast stałych adresów.
  4. Testujesz na kopii pliku i na swoich danych. Poprawki po testach są częścią zlecenia.
  5. Oddaję plik, krótką instrukcję i eksport modułów do osobnych plików, żeby kolejna zmiana miała punkt odniesienia.

Większe narzędzia, z kilkoma plikami, formularzami i wymianą danych z innymi programami, wyceniam po rozmowie. Kwoty prostych i złożonych automatyzacji są na stronie ile kosztuje automatyzacja procesów.

Kiedy wyjść poza VBA

SytuacjaCo proponuję zamiast makra
kilka osób pracuje na tych samych danych jednocześnieaplikację webową z bazą danych, opisaną w tekście z Excela do aplikacji webowej
co tydzień trzeba przetworzyć dziesiątki plików bez otwierania Excelaskrypt w Pythonie uruchamiany według harmonogramu, opisany na stronie automatyzacja w Pythonie
dane mają płynąć ze sklepu, poczty lub programu do fakturprzepływ w n8n, opisany w tekście co to jest n8n
firma pracuje w Microsoft 365 w chmurze i potrzebuje zatwierdzeń w TeamsPower Automate albo n8n, porównane na stronie Power Automate czy n8n
skoroszyt z makrami stał się głównym systemem firmyplan przeniesienia, o którym piszę w tekście modernizacja starego systemu firmowego

Czasem rozsądny jest etap pośredni: naprawiam makro, żeby proces działał od jutra, a równolegle spisujemy jego reguły pod przyszłą aplikację.

Najczęstsze pytania

Czy poprawisz makro napisane przez kogoś innego?

Tak, to częste zlecenie. Najpierw czytam kod i sprawdzam, co naprawdę robi, bo opis od użytkownika bywa niepełny. Jeśli kod jest w złym stanie, mówię, czy taniej będzie go poprawić, czy napisać od nowa.

Czy makro zadziała na Macu?

Częściowo. Podstawowe operacje na arkuszach działają, ale ścieżki do plików, okna dialogowe i wywołania funkcji Windows wymagają zmian. Jeśli makro ma działać na obu systemach, testuję je na obu przed oddaniem.

Czy mogę zabezpieczyć kod makra hasłem?

Można ustawić hasło na projekt VBA, ale to słaba ochrona, którą da się obejść. Traktuję je jako zabezpieczenie przed przypadkową zmianą, a nie przed kimś, kto celowo chce zobaczyć kod.

Czy przepiszesz makro na Pythona albo aplikację?

Tak, jeśli makro przerosło plik. Zaczynam od spisania reguł z istniejącego kodu, bo to on jest najdokładniejszym opisem procesu, a potem proponuję docelowe narzędzie z wyceną.

Powiązane strony

Masz makro, które przestało działać?

Wyślij opis problemu i, jeśli możesz, plik bez danych klientów. Odpowiem, co jest do zrobienia i ile to kosztuje.