Zaawansowany przewodnik VBA dla MS Excel
- 4042
- 738
- Ignacy Modzelewski
Jeśli dopiero zaczynasz z VBA, będziesz chciał zacząć studiować nasz przewodnik VBA dla początkujących. Ale jeśli jesteś doświadczonym ekspertem VBA i szukasz bardziej zaawansowanych rzeczy, które możesz zrobić z VBA w Excel, a następnie czytaj dalej.
Możliwość korzystania z kodowania VBA w programie Excel otwiera cały świat automatyzacji. Możesz zautomatyzować obliczenia w programie Excel, przyciski, a nawet wysłać e -mail. Istnieje więcej możliwości zautomatyzowania codziennej pracy z VBA, niż możesz sobie wyobrazić.
Spis treściTo ustawia aktywny arkusz roboczy Arkusz 1, wyczyszcza arkusz, łączy się z plikiem za pomocą ścieżki pliku zdefiniowanego za pomocą Strfile zmienna, a następnie Z pętla przechodzi przez każdą linię w pliku i umieszcza dane w arkuszu, zaczynając od komórki A1.
Jeśli uruchomisz ten kod, zobaczysz, że dane pliku CSV są importowane do pustego arkusza kalkulacyjnego, w Arkusz 1.
Importowanie to tylko pierwszy krok. Następnie chcesz utworzyć nowy nagłówek dla kolumny, która będzie zawierać wyniki obliczeń. W tym przykładzie powiedzmy, że chcesz obliczyć 5% podatków zapłaconych od sprzedaży każdego przedmiotu.
Kolejność działań powinien podjąć Twój kod:
- Utwórz kolumnę Nowe wyniki o nazwie podatki.
- Pętla przez Sprzedane jednostki kolumn i oblicz podatek od sprzedaży.
- Napisz wyniki oblicz do odpowiedniego wiersza w arkuszu.
Poniższy kod dokona wszystkich tych kroków.
Dim Lastrow tak długo
Dim startcell jako zakres
Dim RowCounter jako liczba całkowita
Dim RNG jako zakres, komórka jako zakres
Dim flttax jako podwójny
Set startCell = Range („a1”)
„Znajdź ostatni rząd i kolumnę
Lastrow = WS.Komórki (WS.Wydziwianie.Licz, startcell.Kolumna).Koniec (xlup).Wiersz
Ustaw rng = WS.Zakres (WS.Komórki (2, 4), WS.Komórki (Lastrow, 4))
RowCounter = 2
Komórki (1, 5) = „Podatki”
Dla każdej komórki w RNG
flttax = komórka.Wartość * 0.05
Komórki (RowCounter, 5) = flttax
RowCounter = RowCounter + 1
Następna komórka
Ten kod znajduje ostatni wiersz w arkuszu danych, a następnie ustawia zakres komórek (kolumna z cenami sprzedaży) zgodnie z pierwszym i ostatnim rządem danych. Następnie kod pętle przez każdą z tych komórek wykonuje obliczenia podatkowe i zapisuje wyniki w nowej kolumnie (kolumna 5).
Wklej powyższy kod VBA poniżej poprzedniego kodu i uruchom skrypt. Zobaczysz wyniki pojawiające się w kolumnie E.
Teraz, za każdym razem, gdy otwierasz arkusz Excel, automatycznie wyjdzie i otrzyma najświeższą kopię danych z pliku CSV. Następnie wykonuje obliczenia i zapisze wyniki na arkuszu. Nie musisz już nic robić ręcznie!
Oblicz wyniki z przycisku Naciśnij
Jeśli wolisz mieć bardziej bezpośrednią kontrolę po uruchomieniu obliczeń, zamiast działać automatycznie po otwarciu arkusza, możesz zamiast tego użyć przycisku sterowania.
Przyciski sterujące są przydatne, jeśli chcesz kontrolować, które obliczenia są używane. Na przykład w tym samym przypadku co powyżej, co jeśli chcesz użyć 5% stawki podatkowej dla jednego regionu i 7% stawki podatkowej dla innego?
Możesz pozwolić, aby ten sam kod importowy CSV działał automatycznie, ale pozostaw kod obliczeń podatkowych, gdy naciśnij odpowiedni przycisk.
Korzystając z tego samego arkusza kalkulacyjnego jak powyżej, wybierz Deweloper karta i wybierz Wstawić z Sterownica grupa w wstążce. Wybierz naciśnij przycisk Kontrola ActiveX z menu rozwijanego.
Narysuj przyciski na dowolnej części arkusza z dala od miejsca, w którym pójdą dowolne dane.
Kliknij przycisk prawym przyciskiem myszy i wybierz Nieruchomości. W oknie właściwości zmień podpis na to, co chcesz wyświetlić na użytkownika. W takim przypadku może to być Oblicz 5% podatków.
Zobaczysz ten tekst odbity na samym przycisku. Zamknij nieruchomości okno i kliknij dwukrotnie sam pushbutton. To otworzy okno edytora kodu, a twój kursor będzie w funkcji, która będzie działać, gdy użytkownik naciśnie pushButton.
Wklej kod obliczeń podatkowych z powyższej sekcji do tej funkcji, utrzymując mnożnik stawki podatkowej na 0.05. Pamiętaj, aby dołączyć następujące 2 wiersze w celu zdefiniowania aktywnego arkusza.
Dim WS jako arkusz roboczy, Strfile jako ciąg
SET WS = ActiveWorkbook.Arkusze („arkusz 1”)
Teraz powtórz proces ponownie, tworząc drugi przycisk. Zrób podpis Oblicz 7% podatków.
Kliknij dwukrotnie ten przycisk i wklej ten sam kod, ale zrób mnożnik podatkowy 0.07.
Teraz, w zależności od przycisku, kolumna podatków zostanie odpowiednio obliczona.
Po zakończeniu oba przyciski nacisku na arkuszu. Każdy z nich zainicjuje inne obliczenia podatkowe i zapisze różne wyniki w kolumnie wyników.
Aby to wysłać, wybierz Deweloper menu i wybierz Tryb projektowania uformuj grupę kontroli w wstążce, aby wyłączyć Tryb projektowania. To aktywuje przyciski.
Spróbuj wybrać każdy przycisk, aby zobaczyć, jak zmienia się kolumna wyników „podatków”.
Wyniki obliczeń e -mail dla kogoś
Co jeśli chcesz wysłać wyniki w arkuszu kalkulacyjnym do kogoś za pośrednictwem e -maila?
Możesz utworzyć inny przycisk wywołany Arkusz e -mail do szefa stosując tę samą procedurę powyżej. Kod tego przycisku będzie obejmował użycie obiektu Excel CDO do konfigurowania ustawień e-maili SMTP i wysyłania e-maila do wyników w formacie odczytującego użytkownika.
Aby włączyć tę funkcję, musisz wybrać Narzędzia i referencje. Przewiń w dół do Microsoft CDO dla biblioteki Windows 2000, Włącz i wybierz OK.
Istnieją trzy główne sekcje kodu, które musisz utworzyć, aby wysłać wyniki wiadomości e -mail i osadzenia arkusza kalkulacyjnego.
Pierwszym z nich jest konfiguracja zmiennych do utrzymywania tematu, adresów i na podstawie ciała e -mail.
Dim CDO_mail jako obiekt
Dim cdo_config jako obiekt
Dim smtp_config jako wariant
Dim strsubject jako ciąg
Dim strfrom jako ciąg
Dim strto jako ciąg
Dim Strcc jako ciąg
Dim Strbcc jako ciąg
Dim Strbody jako ciąg
Dim Lastrow tak długo
Dim startcell jako zakres
Dim RowCounter jako liczba całkowita
Dim RNG jako zakres, komórka jako zakres
Dim flttax jako podwójny
SET WS = ActiveWorkbook.Arkusze („arkusz 1”)
strSubject = „Podatki zapłacone w tym kwartale”
strfrom = "[email protected] "
strto = "[email protected] "
strcc = ""
STRBCC = ""
strbody = "Poniżej znajduje się awaria podatków płaconych od sprzedaży w tym kwartale."
Oczywiście ciało musi być dynamiczne w zależności od wyników w arkuszu, więc tutaj musisz dodać pętlę przechodzi przez zakres, wyodrębnia dane i zapisuje linię na raz do ciała.
Set startCell = Range („a1”) „Znajdź ostatni wiersz i kolumnę Lastrow = WS.Komórki (WS.Wydziwianie.Licz, startcell.Kolumna).Koniec (xlup).Zestaw wierszy rng = WS.Zakres (WS.Komórki (2, 4), WS.Komórki (Lastrow, 4)) RowCounter = 2 Strbody = Strbody & Vbcrlf dla każdej komórki w RNG Strbody = Strbody & Vbcrlf Strbody = Strbody & „We SPRZEDAŻ” i Komórki (RowCounter, 3).Wartość i „of” i komórek (RowCounter, 1).Wartość _ & „for” i komórek (RowCounter, 4).Wartość i „i płatne podatki” i komórek (RowCounter, 5).Wartość & ".„RowCounter = RowCounter + 1 Następna komórka
Następna sekcja obejmuje konfigurowanie ustawień SMTP, abyś mógł wysłać wiadomość e -mail za pośrednictwem serwera SMTP. Jeśli używasz Gmaila, zazwyczaj jest to Twój adres e -mail Gmail, hasło Gmail i serwer Gmail SMTP (SMTP.Gmail.com).
SET CDO_mail = CreateObject ("CDO.Komunikat ") na błędach goto erser_handling Set CDO_CONFIG = CreateObject (" CDO.Konfiguracja ") CDO_CONFIG.Załaduj -1 Ustaw SMTP_CONFIG = CDO_CONFIG.Pola z SMTP_CONFIG .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/sensing ”) = 2 .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/smtpserver ") =" SMTP.Gmail.com " .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/smtpauthenticate ") = 1 .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/sendusername ") =" e -mail@strona internetowa.com " .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/sendPassword ") =" hasło " .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/smtpserverport ") = 465 .Pozycja („schematy http: //.Microsoft.com/cdo/configuration/smtpusessl ") = true .Zaktualizuj koniec z zestawem CDO_mail .Konfiguracja = cdo_config koniec z
Wymień e -mail@strona internetowa.com i hasło z własnymi szczegółami konta.
Wreszcie, aby zainicjować wysłanie e -maila, wstaw następujący kod.
CDO_mail.Temat = strsubject
CDO_mail.Od = strfrom
CDO_mail.Do = Strto
CDO_mail.TextBody = Strbody
CDO_mail.CC = Strcc
CDO_mail.BCC = STRBCC
CDO_mail.Wysłać
Error_handling:
Jeśli err.Opis „” następnie msgbox err.Opis
Notatka: Jeśli widzisz błąd transportu podczas próby uruchomienia tego kodu, jest to prawdopodobne, że konto Google blokuje „mniej bezpieczne aplikacje” przed uruchomieniem. Musisz odwiedzić stronę Ustawienia mniej bezpiecznych aplikacji i włączyć tę funkcję.
Po tym, jak zostanie włączony, Twój e -mail zostanie wysłany. Tak to wygląda dla osoby, która otrzymuje automatycznie wygenerowane wyniki e -mail.
Jak widać, jest wiele, które możesz zautomatyzować z Excel VBA. Spróbuj zagrać z fragmentami kodu, o których nauczyłeś się w tym artykule i stwórz własne unikalne automatyczne automatyczne automatyczne.
- « Jak migrować notatki Evernote do Microsoft OneNote
- Jak pobrać ISO Windows 10 bez narzędzia do tworzenia multimediów »