W dzisiejszym poście nauczymy się jak skopiować kod add-inn (kod dodatku do Excela), żeby wkleić go do konkretnego pliku Excela. Zadanie to wykonamy na podstawie przykładowych danych z rys. nr 1.

Rys. nr 1 – przykładowe dane
Rys. nr 1 – przykładowe dane

W poprzednim poście  (porada 379) pokazaliśmy jak zainstalować add-inn, dodatek do Excela na przykładzie Jona Acampory. Problem z dodatkami jest taki, że są instalowane na konkretnym urządzeniu (komputerze) i przy kopiowaniu pliku, przenoszeniu pliku na inne urządzenie dodatek nie będzie działał. Podsumowując na innym urządzeniu mimo, że korzystamy z tego samego pliku nie mamy dodatkowych opcji wynikających z dodatku, z którego korzystaliśmy, nie ma również dodatkowej karty XL Campus na pasku narzędzi.

Możemy jednak skopiować kod tego dodatku i podpiąć go pod konkretny plik Excela. Wykonamy to zadanie z kodem Jona Acampory ponieważ jest on darmowy i możemy sobie pozwolić na jego kopiowanie.

Załóżmy że mamy otwarty nasz przykładowy plik Excela (dane z rys. nr 1) i mamy pobrany dodatek Add-inn Jona Acampory na dysk (rys. nr 2).

Rys. nr 2 – dodatek Jona Acampora pobrany na dysk
Rys. nr 2 – dodatek Jona Acampora pobrany na dysk

Istotne jest, że jeśli wykonałeś czynności z poprzedniego postu i masz już zainstalowany dodatek add-in to nie musisz na tym etapie otwierać pliku dodatku. My dla przykładu otworzymy sobie ten plik w Excelu (nie zainstalujemy tylko otworzymy), czyli klikamy na jego nazwę prawym przyciskiem myszy (plik z rozszerzeniem .xlam) i z podręcznego menu rozwijamy polecenie Otwórz za pomocą, a następnie wybieramy program Excel (rys. nr 3).

Rys. nr 3 – Otwieranie dodatku add-in za pomocą programu Excel
Rys. nr 3 – Otwieranie dodatku add-in za pomocą programu Excel

Po uruchomieniu Excela kod Jona Acampory powinien się uruchomić, czyli powinniśmy widzieć kartę XL Campus. Jest tp uruchomienie jednorazowe, czyli jak ponownie uruchomimy Excela to już tego dodatku nie będzie (w przeciwieństwie do porady nr 379, gdzie instalowaliśmy dodatek na stałe na to urządzenie).

Istotne dla nas jest teraz wyciągnięcie kodu z tego dodatku i podpięcie do na stałe do tego pliku. Korzystając ze skrótu klawiszowego Alt+F11, przechodzimy do Edytora zaawansowanego VBA (rys. nr 4).

Rys. nr 4 – edytor zaawansowany VBA
Rys. nr 4 – edytor zaawansowany VBA

Przede wszystkim musimy sobie uruchomić edytor Projektu, a możemy to zrobić wybierając polecenie Project Explorer z karty View (rys. nr 5).

Rys. nr 5 – polecenie Project Explorer
Rys. nr 5 – polecenie Project Explorer

W edytorze projektu widzimy dodatek Add-in oraz nasz plik, który nie posiada pod sobą żadnych modułów, formularzy czy klas. Musimy skopiować elementy zaznaczone na zielono na rys. nr 6 do naszego pliku. Możemy je kopiować dzięki temu, że dodatek Jona Acampora jest darmowy.

Rys. nr 6 – elementy dodatku add-in, które musimy skopiować
Rys. nr 6 – elementy dodatku add-in, które musimy skopiować

Moduły z dodatku kopiujemy na zasadzie przeciągania, czyli przeciągamy wszystkie moduły dodatku add-in do naszego pliku. Po skopiowaniu nasz plik powinien zawierać wszystkie elementy kodu dodatku (przedstawione na rys. nr 7).

Rys. nr 7 – elementy kodu skopiowane do naszego pliku
Rys. nr 7 – elementy kodu skopiowane do naszego pliku

Kiedy już skopiujemy ten kod, musimy poznać na tyle ten dodatek, żeby wiedzieć które makro jest tym głównym, które uruchamia cały proces. W przypadku tego dodatku jest to formularz. Aby uruchomić ten formularz potrzebujemy kodu, który przygotowałem sobie wcześniej. Kod ten powinien wyglądać następująco:

Sub ListaWyszukaj ()

            F_ListSearch.Show

End sub

Zaznaczamy ten kod (rys. nr 8) i kopiujemy go za pomocą skrótu klawiszowego Ctrl+C.

Rys. nr 8 – kod dodatku Add-in (makro)
Rys. nr 8 – kod dodatku Add-in (makro)

Aby wkleić ten kod do naszego pliku klikamy prawym przyciskiem myszy na Modules (moduły w naszym pliku) i z podręcznego menu rozwijamy polecenie Insert, a następnie wybieramy polecenie Module (rys. nr 9).

Rys. nr 9 – polecenie wstawiania modułu (makra)
Rys. nr 9 – polecenie wstawiania modułu (makra)

Otworzy nam się okno, gdzie za pomocą skrótu klawiszowego Ctrl+V możemy wkleić wcześniej skopiowane makro (rys. nr 10).

Rys. nr 10 – miejsce wklejenia skopiowanego makra
Rys. nr 10 – miejsce wklejenia skopiowanego makra

Musimy pamiętać o zapisaniu pliku za pomocą skrótu klawiszowego Ctrl+S. Powyższe działania sprawiły, że mamy działające uruchamiające makro podpięte do naszego pliku. Możemy teraz w Excelu podejrzeć makra klikając polecenie Makra na karcie Deweloper (rys. nr 11). Możemy również skorzystać ze skrótu klawiszowego Alt+F8.

Rys. nr 11 – polecenie Makra na karcie Deweloper
Rys. nr 11 – polecenie Makra na karcie Deweloper

Otworzy nam się okno ze wszystkimi makrami w kodzie przedstawione na rys. nr 12. Nasze makro uruchamiające formularz nazywa się ListaWyszukaj. Musimy je znaleźć na liście wszystkich makr i zaznaczyć. Ważne jest, aby to makro przypiąć do jakiegoś przycisku lub podpiąć pod skrót klawiszowy. My podepniemy je pod skrót klawiszowy ponieważ będziemy go często używać. W tym celu zaznaczamy nasze makro i przechodzimy do jego edycji za pomocą przycisku Opcje (rys. nr 12).

Rys. nr 12 – Nazwa naszego makra na liście wszystkich makr
Rys. nr 12 – Nazwa naszego makra na liście wszystkich makr

Otworzy nam się okno Opcji makra, gdzie możemy sobie wybrać jakiś skrót uruchamiający nasze makro. W polu Klawisz skrótu wpisujemy np. literkę L i otrzymamy skrót klawiszowy uruchamiający makro w postaci Ctrl+L. Wybrany skrót klawiszowy zatwierdzamy przyciskiem OK (rys. nr 13).

Rys. nr 13 – Opcje makra
Rys. nr 13 – Opcje makra

Excel po zatwierdzeniu skrótu klawiszowego powróci do okna Makro, które zamykamy za pomocą znaku x w prawym górnym rogu okna. Teraz możemy sprawdzić działanie makra uruchamiającego nasz dodatek. Wciskamy skrót klawiszowy Ctrl+L aby uruchomić makro ListSearch (rys. nr 14).

Rys. nr 14 – makro ListSearch uruchomione za pomocą skrótu klawiszowego Ctrl+L
Rys. nr 14 – makro ListSearch uruchomione za pomocą skrótu klawiszowego Ctrl+L

W polu w tym oknie możemy zacząć wpisywać nazwę artykułu i funkcja ta ograniczy liste wyszukiwania do słów zawierających dane znaki (rys. nr 15).

Rys. nr 15 – lista rozwijana z wyszukiwaniem
Rys. nr 15 – lista rozwijana z wyszukiwaniem

Kod Jona jest dobrze dopracowany, mianowicie jeśli wpiszemy jakąś wartość i nie wybierzemy czegoś z listy a będziemy chcieli zatwierdzić wpisane znaki przyciskiem Enter, to wyskoczy nam komunikat, że tej wartości nie możemy wpisać bo nie ma jej na liście (rys. nr 16).

Rys. nr 16 – komunikat, że wpisanej wartości nie ma na liście
Rys. nr 16 – komunikat, że wpisanej wartości nie ma na liście

Musimy mieć pewność, że wpisaliśmy pełną nazwę z listy, ponieważ w przeciwnym razie dodatek add-in nie pozwoli nam jej zatwierdzić Enterem.

Analogicznie dodatek zadziała dla listy elementów – kolumny z danymi (bez listy rozwijanej). Uruchamiamy ponownie kod dodatku za pomocą ustawionego przez nas skrótu klawiszowego Ctrl+L. Pojawi nam się okienko ListSearch, które automatycznie wykryje wszystkie elementy z listy w kolumnie (rys. nr 17).

Rys. nr 17 – ListSearch wykrywające elementy z listy w kolumnie (nie listy rozwijanej)
Rys. nr 17 – ListSearch wykrywające elementy z listy w kolumnie (nie listy rozwijanej)

Wszystko działa poprawnie, mamy podpięty kod pod nasz plik i mamy pewność, że po uruchomieniu na innym komputerze zadziała on poprawnie.

Potrzebna nam jest jeszcze drobna modyfikacja tego kodu ponieważ została ona napisana pod język angielski, gdzie znakiem (ogranicznikiem) rozdzielającym elementy jest przecinek (,) a nie jak w polskiej wersji średnik (;). Zaznaczamy dowolną pojedynczą komórkę, a następnie wybieramy polecenie Poprawność danych z karty Dane (rys. nr 18).

Rys. nr 18 – polecenie Poprawność danych
Rys. nr 18 – polecenie Poprawność danych

Otworzy nam się okno Sprawdzania poprawności danych, gdzie w karcie Ustawienia, w polu Dozwolone (Kryteria poprawności) wybieramy z listy rozwijanej opcję Lista, a następnie w polu Źródło dodajemy przykładowe elementy oddzielone odpowiednim znakiem (średnikiem) jak widać na rys. nr 19.

Rys. nr 19 – okno Sprawdzania poprawności danych
Rys. nr 19 – okno Sprawdzania poprawności danych

Otrzymamy prostą, poprawnie działającą listę przedstawioną na rys. nr 20.

Rys. nr 20 – lista rozwijana stworzona poprzez sprawdzanie poprawności danych
Rys. nr 20 – lista rozwijana stworzona poprzez sprawdzanie poprawności danych

Teraz jeśli użyjemy skrótu klawiszowego Ctrl+L, aby uruchomić nasz kod i spróbujemy w okienku ListSearch rozwinąć tą listę otrzymamy tylko jeden element składający się ze wszystkich elementów naszej listy (rys. nr 21).

Rys. nr 21 – elementy z listy rozpoznane przez dodatek jako jeden element
Rys. nr 21 – elementy z listy rozpoznane przez dodatek jako jeden element

Podsumowując kod naszego dodatku nie rozpoznał tej listy, ponieważ jej elementy zostały rozdzielone średnikami, a nie jak w angielskiej wersji przecinkami. Kod ten ma zapisane w pamięci, że znakiem rozdzielającym elementy z listy jest przecinek. Naszym zadaniem jest skorygowanie tego tak, aby kod poprawnie rozpoznawał elementy listy.

Za pomocą skrótu klawiszowego Alt+F11 przechodzimy do kodu w edytorze VBA. Musimy znaleźć w elementach naszego pliku formularz (Forms), żeby wyświetliło się nam odpowiednie okno, w którym wprowadzimy zmiany (rys. nr 22).

Rys. nr 22 – zmiany w kodzie dodatku (formularz)
Rys. nr 22 – zmiany w kodzie dodatku (formularz)

W okienku List Search – ExcelCampus.com musimy kliknąć prawym przyciskiem myszy na szare tło, a następnie wybrać z podręcznego menu polecenie View Code (rys. nr 23).

Rys. nr 23 – polecenie View code
Rys. nr 23 – polecenie View code

Otworzy nam się okno z kodem, który zmodyfikujemy (rys. nr 24).

Rys. nr 24 – okno z kodem
Rys. nr 24 – okno z kodem

Aby wyszukać interesujący nas fragment możemy użyć skrótu klawiszowego Ctrl+F, otworzy nam się okienko Find, gdzie w polu Find What w znakach cudzysłowu wpisujemy szukany znak (przecinek). Wpisany znak zatwierdzamy przyciskiem Find Next (rys. nr 25).

Rys. nr 25 – szukanie w kodzie znaku przecinka
Rys. nr 25 – szukanie w kodzie znaku przecinka

Wyskoczy nam komunikat, że został znaleziony taki element. Zatwierdzamy ten komunikat przyciskiem OK i zamykamy okienko Find. W oknie z kodem mamy podświetlony szukany element kodu co widać na rys. nr 26.

Rys. nr 26 – podświetlony szukany fragment kodu
Rys. nr 26 – podświetlony szukany fragment kodu

Jest to linijka kodu, która wyznacza znak rozdzielający elementy listy. Pamiętamy, że w polskiej wersji oprogramowania podziała elementów odbywa się za pomocą znaku średnika. Udało mi się znaleźć fragment kodu, który należy wstawić w miejsce linijki ze znakiem przecinka. Kopiujemy ten fragment z Notepada ++ za pomocą skrótu klawiszowego Ctrl+C (rys. nr 27).

Rys. nr 27 – fragment kodu, który wkleimy do VBA
Rys. nr 27 – fragment kodu, który wkleimy do VBA

Teraz w VBA wstawiamy fragment kodu ze znakiem przecinka w pojedynczy cudzysłów (robimy z niego komentarz), a następnie wklejamy skopiowany wcześniej kod za pomocą skrótu klawiszowego Ctrl+V. Po drobnych estetycznych poprawkach otrzymamy kod przedstawiony na rys. nr 28. Zostawiam dużo komentarzy, żeby potencjalny użytkownik zrozumiał co tutaj zmieniliśmy.

Rys. nr 28 – Zmieniony kod (teraz średnik będzie znakiem rozdzielającym elementy listy)
Rys. nr 28 – Zmieniony kod (teraz średnik będzie znakiem rozdzielającym elementy listy)

W miejsce przecinka wpisujemy zmienną, która odczyta z wersji oprogramowania Windows odczyta, jaki jest poprawny znak rozdzielający elementy listy. Musimy pamiętać o zapisaniu zmian w kodzie za pomocą skrótu klawiszowego Ctrl+S i wracamy do Excela. Teraz kiedy za pomocą skrótu klawiszowego Ctrl+L wywołamy nasz dodatek ListSearch, otrzymamy trzy elementy listy (rys. nr 29).

Rys. nr 29 – poprawnie rozpoznane elementy listy
Rys. nr 29 – poprawnie rozpoznane elementy listy

Naprawiliśmy tą niedogodność, która nie zawsze występuje, ponieważ jeśli lista rozwijana korzysta ze źródła, którym był zakres komórek, problem ten się nie pojawi. Najczęściej pojawia się taki problem kiedy sami wpisujemy elementy takich list.

Aby sprawdzić czy wszystko działa poprawnie, zamykamy wszystkie okna, arkusze i pliki, a przede wszystkim Excela. Następnie ponownie uruchamiamy nasz plik i korzystając ze skrótu klawiszowego Ctrl+L uruchamiamy nasz dodatek. Podsumowując dzięki naszym modyfikacjom kod działa, ponieważ jest podpięty do pliku. Korzystając ze skrótu klawiszowego Ctrl+F11, uruchamiamy ponownie edytor VBA, żeby pokazać, że mamy uruchomiony tylko nasz plik, nie został uruchomiony plik kodu z rozszerzeniem .xlam, co widać na rys. nr 30

Rys. nr 30 – edytor VBA
Rys. nr 30 – edytor VBA

Książka Mistrz Excela + promo na 35 urodziny

Chcę Cię poinformować, że w końcu udało mi zebrać środki i dopiąć wszystkich formalności, żeby powstało II wydanie mojej książki Mistrz Excela (zostałem wydawcą)
II wydanie jest wzbogacone o rozdział (nr 22) wprowadzający w genialny dodatek (Power Query) do Excela służący do pobierania, łączenia i wstępnej obróbki danych z wielu źródeł.

Książka Mistrz Excela to historia Roberta, który musi poznać dobrze Excela na potrzeby nowej pracy. Książka jest napisana w formie rozmów Roberta z trenerem, dzięki temu jest przystępniejsza w odbiorze niż standardowe książki techniczne pisane językiem "wykładowym".

Rozmowy zostały podzielone na 22 tematyczne rozdziały, które krok po kroku wprowadzają Cię w tajniki Excela. Robert zaczyna naukę od poznania ciekawych aspektów sortowania i filtrowania danych w Excelu, przechodzi przez formatowanie warunkowe, tabele przestawne, funkcje wyszukujące i wiele innych tematów, by na koniec poznać wstępne informacje o VBA i Power Query.
A wszystko to na praktycznych przykładach i z dużą ilością zdjęć.

Żebyś mógł śledzić postępy Roberta, do książki dołączone są pliki Excela, na których pracuje Robert.

Aktualnie w promocji urodzinowej możesz mieć Mistrza Excela w obniżonej cenie, jeśli tylko wpiszesz kod 35URODZINY
https://exceliadam.pl/produkt/ksiazka-mistrz-excela

Na powyższej stronie znajdziesz dokładniejszy opis książki, opinie osób, które kupiły I wydanie oraz podgląd pierwszego rozdziału książki, żeby upewnić się, czy forma rozmów przy nauce Excela jest dla Ciebie.
Jeśli książka Ci się spodoba poinformuj o niej swoich znajomych.

W ramach promocji na moje 35 urodziny możesz też mieć każdy z moich kursów wideo na Udemy za zaledwie 35 zł. Linki do kursów zamieszczam poniżej. W każdym kursie są udostępnione filmy do podglądu, byś mógł się przekonać czy dany kurs jest dla Ciebie.

Power Query
https://www.udemy.com/course/mistrz-power-query/?couponCode=35URODZINY

Mistrz Excela
https://www.udemy.com/mistrz-excela/?couponCode=35URODZINY

Dashboardy
https://www.udemy.com/course/excel-dashboardy/?couponCode=35URODZINY

Mistrz Formuł
https://www.udemy.com/course/excel-mistrz-formul/?couponCode=35URODZINY

VBA
https://www.udemy.com/course/excel-vba-makra/?couponCode=35URODZINY

Microsoft Power BI
https://www.udemy.com/course/power-bi-microsoft/?couponCode=35URODZINY

Książka Mistrz Excela reklama