
(Miniaturka przedstawia zrzut ekranu z mojego prywatnego pliku Excela z projektami; zrealizowany jest on metodą którą opiszę poniżej)
Witajcie moi drodzy
Zapraszam do lektury mojego nietypowego tematu przeznaczonego dla elektroników amatorów i hobbystów wykonujących własne projekty.
Przedstawię dzisiaj prosty sposób na organizację naszego zbioru części i listy projektów które planujemy w programie Microsoft Excel za pomocą makra VBA.
(AKTUALIZACJA: teraz w temacie jest też działająca wersja dla Open Office!).
Przedstawiony sposób oprócz oczywistych rzeczy takich jak lista posiadanych części/planowanych projektów będzie posiadać automatyczne sprawdzanie czy posiadany daną część w naszym zbiorze.
Na końcu dam do pobrania Excelowy plik (skoroszyt .xlsm) gotowy do użycia.
Motywacja projektu
Przy większej ilości projektów i części trudno jest spamiętać co już posiadamy, a co musimy kupić. Przedstawiony tu skoroszyt Excela będzie stanowić rozwiązanie tego problemu i będzie automatycznie podświetlać na czerwono nazwy części których jeszcze nie mamy, i na zielono nazwy części, które już posiadamy. Dzięki niemu będzie można było jednym rzutem oka sprawdzić czy mamy wszystko co potrzebne i będzie dało się uniknąć sytuacji w której okazuje się, że zapomnieliśmy o jednym tranzystorze i musimy przez niego zwlekać tydzień z projektem.
Organizacja arkuszy
Moją prostą bazę danych w Excelu oparłem o dwa osobne arkusze, dwie listy. Oba należą do jednego skoroszytu (jednego pliku) Excela.
Pierwszy arkusz nazywa się "Parts".
Arkusz "Parts" zawiera listę części jakie posiadamy. W kolumnie A wpisujemy nazwę. W kolumnie B możemy wpisać ilość, ale na ten moment nie jest ona używana przez skrypt gdyż uznałem, że i tak większość osób kupuje po kilka części i warto jest mieć elementy zapasowe. Dodatkowo w kolumnie C warto wpisać gdzie mamy te części, w jakiej szufladce, itp.
Zrzut ekranu:

Na zrzucie ekranu wpisane jest, że posiadam tranzystory: BC547, BC557 oraz układ NE555. Ilości nie uzupełniałem, gdyż kupuję hurtowo.
Drugi arkusz nazywa się "Schematics".
Arkusz "Schematics" zawiera listę projektów jakie nas interesują i jakie zamierzamy zrobić w przyszłości.
Jego forma jest dość dowolna, jedynie "magiczna" jest w nim pierwsza kolumna, gdyż ona automatycznie sprawdza czy posiadamy dany element w naszej bazie, tzn. na liście z arkusza Parts.
Zrzut ekranu:

Na zrzucie ekranu widać dwa projekty które planuję. Do jednego potrzeba BC548, którego nie posiadam (program podświetla go na czerwono), a do drugiego projektu potrzeba NE555, który posiadam (program podświetla go na zielono).
(Ja wiem, że można by tego BC548 zastąpić, to tylko przykład)
Do arkusza Schematics polecam wpisywać nazwę projektu, wklejać link do opisu projektu który chcemy wykonać (ale nie do kolumny A) oraz też skopiować tam sam schemat, by mieć do niego dostęp szybko i też w trybie offline.
Przydaje się też tam dać opis projektu oraz różne adnotacje nasze i wnioski.
I co najważniejsze - potem należy wypisać tam nazwy elementów które chcemy wiedzieć czy mamy. By makro mogło nam je kolorować na zielono i czerwono.
Działanie makra od wewnątrz
Jeśli tylko chcecie skorzystać z mojego szablonu to nie musicie tego wiedzieć, ale jeśli ktoś jest zainteresowany jak to się dzieje że Excel poznaje czy mamy daną część, to proszę spojrzeć na zrzut ekranu:

Całość sprowadza się tylko do obsługi jednego zdarzenia (OnChange) a potem sprawdzenia czy dana wartość jednej komórki znajduje się gdzieś w drugiej kolumnie. Na bazie tego ustawiany jest kolor tła.
Te zdarzenie "OnChange" oraz cały skrypt jest przypisany dla całego skoroszytu, nie tylko dla jednego arkuszu - trzeba o tym pamiętać, bo chcemy odświeżać listę zarówno w przypadku modyfikacji spisu posiadanych elementów jak i spisu potrzebnych elementów.
Warto też zwrócić uwagę, że nazwa arkuszu Parts jest wpisana w kodzie na sztywno, więc jak ją zmienicie, to wszystko się popsuje. No, chyba, że też zmienicie ją w kodzie.
Co można by ulepszyć?
Bieżącą wersję makra można by nieco usprawnić. Widzę przede wszystkim dwie możliwości które by ulepszyły system.
- można by dodać wsparcie zamienników, np. w osobnym arkuszu dać listę co może zastąpić co. Ale ten problem można też rozwiązać "na około" po prostu poprzez... wypisywanie tych części które mamy oraz ich odpowiedników jako posiadane
- można by dodać wsparcie ilości części (bo teraz system tylko patrzy po nazwie, gdyż ja zakładam, że i tak muszę mieć na wszelki wypadek nadmiarowe). System mógłby liczyć czy mamy wystarczająco części i to by mogło się przydać pewnie dla tych droższych kostek lub modułów, których kupuje się po jednej sztuce
Szablon do pobrania
Plik Excela z przykładowymi danymi do pobrania:
Zapraszam do użycia i ulepszania makra. Jeśli ktoś np. doda wsparcie liczby części to mógłby opublikować w tym temacie swoje poprawki.
Wersja dla Open Office - do pobrania
Początkowo tej wersji nie było, ale zrobiłem ją po sugestii użytkownika @Janusz_kk.
Użyłem OpenOffice 4.1.7.
Niestety 1:1 przepisane makro w Open Office nie działało ze względu na niekompatybilność funkcji Find w tamtejszej implementacji VBA, więc musiałem te Find rozpisać.
Wyszło tak:

Dodatkowo musiałem obniżyć poziom bezpieczeństwa makr, zgodnie z ostrzeżeniem które Open Office sam wyświetla:

Ustawiłem to w Tools->Options->Open Office->Security. Włączyłem tam wszystkie makra:

Dodatkowo w Options->Load/Save->VBA Properties włączyłem wykonywanie makr tzn 'executable':

Filmik przedstawiający działanie mojego makra w Open Office:
Przeportowana do Open Office baza z makrem w formacie .ods do pobrania:
Podsumowanie
Pokazałem tu sposób na organizację projektów z którego rzeczywiście korzystałem przez długi czas. Jak na moje potrzeby sprawdzał się idealnie. Nie wiem na ile Wam przypasuje, ale plik Excel dałem do pobrania więc zachęcam chociaż do wypróbowania go u Was.
PS: Proszę pamiętać by włączyć makra po pobraniu, inaczej skrypt nie działa.
A jakie Wy macie sposoby na organizację Waszego zbioru części i planowanych projektów?
Cool? Ranking DIY