Welcome to Our Website

pierwsze kroki z VBA w biurze

  • 14/08/2019
  • 25 minut do przeczytania
    • o
    • R
    • l
    • m
    • o
    • +4

powtarzalne sprzątanie pięćdziesięciu tabel w Wordzie? Czy chcesz, aby dany dokument monitował użytkownika o wprowadzenie danych po jego otwarciu?, Czy masz trudności z wymyśleniem, jak skutecznie przenieść kontakty z programu Microsoft Outlook do arkusza kalkulacyjnego Microsoft Excel?

możesz wykonywać te zadania i osiągnąć znacznie więcej, używając Visual Basic for Applications (VBA) for Office-prostego, ale potężnego języka programowania, którego możesz użyć do rozszerzenia aplikacji Office.

Ten artykuł jest przeznaczony dla doświadczonych użytkowników pakietu Office, którzy chcą dowiedzieć się o VBA i którzy chcą uzyskać wgląd w to, w jaki sposób programowanie może pomóc im dostosować pakiet Office.

pakiet biurowy aplikacji posiada bogaty zestaw funkcji., Istnieje wiele różnych sposobów tworzenia, formatowania i manipulowania dokumentami, wiadomościami e-mail, bazami danych, formularzami, arkuszami kalkulacyjnymi i prezentacjami. Wielka moc programowania VBA w pakiecie Office polega na tym, że prawie każda operacja, którą można wykonać za pomocą myszy, klawiatury lub okna dialogowego, może być również wykonana za pomocą VBA. Co więcej, jeśli można to zrobić raz za pomocą VBA, można to zrobić równie łatwo sto razy. (W rzeczywistości automatyzacja powtarzalnych zadań jest jednym z najczęstszych zastosowań VBA w biurze.,)

poza możliwością tworzenia skryptów VBA w celu przyspieszenia codziennych zadań, możesz użyć VBA, aby dodać nowe funkcje do aplikacji Office lub monitować i wchodzić w interakcje z użytkownikiem dokumentów w sposób dostosowany do Twoich potrzeb biznesowych. Na przykład możesz napisać kod VBA, który wyświetla wyskakujący komunikat przypominający użytkownikom o zapisaniu dokumentu na określonym dysku sieciowym przy pierwszej próbie jego zapisania.

Ten artykuł omawia niektóre z głównych powodów, aby wykorzystać moc programowania VBA., Bada język VBA i gotowe narzędzia, których można użyć do pracy z rozwiązaniami. Na koniec zawiera kilka wskazówek i sposobów na uniknięcie typowych frustracji i błędów programistycznych.

Uwaga

jesteś zainteresowany rozwojem rozwiązań, które rozszerzają doświadczenie biurowe na wiele platform? Sprawdź nowy model dodatków Office. Dodatki pakietu Office mają niewielkie rozmiary w porównaniu z dodatkami i rozwiązaniami VSTO i można je zbudować przy użyciu prawie każdej technologii programowania internetowego, takiej jak HTML5, JavaScript, CSS3 i XML.,

kiedy używać VBA i dlaczego

istnieje kilka głównych powodów, dla których warto rozważyć programowanie VBA w biurze.

Automatyzacja i powtarzanie

VBA jest skuteczny i wydajny, jeśli chodzi o powtarzalne rozwiązania problemów z formatowaniem lub korekcją. Na przykład, Czy kiedykolwiek zmieniłeś styl akapitu na górze każdej strony w programie Word? Czy kiedykolwiek musiałeś sformatować wiele tabel wklejonych z programu Excel do dokumentu Word lub wiadomości e-mail programu Outlook? Czy kiedykolwiek musiałeś dokonać tej samej zmiany w wielu kontaktach programu Outlook?,

Jeśli masz zmianę, którą musisz wprowadzić więcej niż dziesięć lub dwadzieścia razy, może warto ją zautomatyzować za pomocą VBA. Jeśli jest to zmiana, którą trzeba zrobić setki razy, to z pewnością warto rozważyć. Prawie każda zmiana formatowania lub edycji, którą można zrobić ręcznie, może być wykonana w VBA.

rozszerzenia interakcji użytkownika

są chwile, kiedy chcesz zachęcić lub zmusić użytkowników do interakcji z aplikacją Office lub dokumentem w szczególny sposób, który nie jest częścią standardowej aplikacji., Możesz na przykład poprosić użytkowników o podjęcie określonych działań podczas otwierania, zapisywania lub drukowania dokumentu.

interakcja między aplikacjami Office

czy musisz skopiować wszystkie kontakty z programu Outlook do programu Word, a następnie sformatować je w jakiś szczególny sposób? Czy potrzebujesz przenieść dane z programu Excel do zestawu slajdów PowerPoint? Czasami proste kopiowanie i wklejanie nie robi tego, co chcesz, lub jest zbyt wolne., Możesz używać programowania VBA do interakcji ze szczegółami dwóch lub więcej aplikacji Office w tym samym czasie, a następnie modyfikować zawartość w jednej aplikacji na podstawie zawartości w innej.

robienie rzeczy w inny sposób

programowanie VBA jest potężnym rozwiązaniem, ale nie zawsze jest to optymalne podejście. Czasami warto użyć innych sposobów, aby osiągnąć swoje cele.

krytyczne pytanie, jakie należy zadać, to czy jest łatwiejszy sposób. Zanim rozpoczniesz projekt VBA, rozważ wbudowane narzędzia i standardowe funkcjonalności., Na przykład, jeśli masz czasochłonne zadanie edycji lub układu, rozważ użycie stylów lub klawiszy akceleratora, aby rozwiązać problem. Czy możesz wykonać zadanie raz, a następnie użyć CTRL + Y (Ponów), aby je powtórzyć? Czy można utworzyć nowy dokument o odpowiednim formacie lub szablonie, a następnie skopiować jego zawartość do nowego dokumentu?

aplikacje biurowe są potężne; rozwiązanie, którego potrzebujesz, może już tam być. Poświęć trochę czasu, aby dowiedzieć się więcej o pakiecie Office, zanim przejdziesz do programowania.

zanim rozpoczniesz projekt VBA, upewnij się, że masz czas na pracę z VBA., Programowanie wymaga skupienia i może być nieprzewidywalne. Zwłaszcza jako początkujący, nigdy nie zwracaj się do programowania, chyba że masz czas na uważną pracę. Próba napisania „szybkiego skryptu”, aby rozwiązać problem, gdy zbliża się termin, może skutkować bardzo stresującą sytuacją. Jeśli jesteś w pośpiechu, możesz chcieć użyć konwencjonalnych metod, nawet jeśli są one monotonne i powtarzalne.

Programowanie VBA 101

Korzystanie z kodu do wykonywania aplikacji

możesz pomyśleć, że pisanie kodu jest tajemnicze lub trudne, ale podstawowe zasady wykorzystują codzienne rozumowanie i są dość dostępne., Aplikacje pakietu Microsoft Office są tworzone w taki sposób, że eksponują rzeczy zwane obiektami, które mogą otrzymywać instrukcje, w taki sam sposób, w jaki telefon jest zaprojektowany z przyciskami, których używasz do interakcji z telefonem. Po naciśnięciu przycisku telefon rozpoznaje instrukcję i zawiera odpowiedni numer w sekwencji, którą wybierasz. W programowaniu wchodzi się w interakcję z aplikacją, wysyłając instrukcje do różnych obiektów w aplikacji. Te obiekty są ekspansywne, ale mają swoje granice., Mogą robić tylko to, do czego są przeznaczone i będą robić tylko to, co im każesz.

na przykład rozważmy użytkownika, który otwiera dokument w programie Word, wprowadza kilka zmian, zapisuje dokument, a następnie go zamyka. W świecie programowania VBA Word eksponuje obiekt dokumentu. Za pomocą kodu VBA można polecić obiektowi dokumentu wykonywanie takich czynności, jak otwieranie, zapisywanie lub zamykanie.

poniższa sekcja omawia sposób organizacji i opisywania obiektów.,

model obiektowy

Programiści organizują obiekty programowania w hierarchii, a hierarchię tę nazywa się modelem obiektowym aplikacji. Na przykład program Word ma obiekt aplikacji najwyższego poziomu, który zawiera obiekt dokumentu. Obiekt Document zawiera obiekty akapitu i tak dalej. Modele obiektowe z grubsza odzwierciedlają to, co widzisz w interfejsie użytkownika. Są koncepcyjną mapą aplikacji i jej możliwości.

definicja obiektu nazywa się klasą, więc możesz zobaczyć te dwa terminy używane zamiennie., Technicznie klasa jest opisem lub szablonem, który jest używany do tworzenia lub tworzenia instancji obiektu.

gdy obiekt istnieje, można nim manipulować, ustawiając jego właściwości i wywołując jego metody. Jeśli myślisz o obiekcie Jak o rzeczowniku, właściwościami są przymiotniki opisujące rzeczownik, a metodami są czasowniki, które ożywiają rzeczownik. Zmiana właściwości zmienia pewną jakość wyglądu lub zachowania obiektu. Wywołanie jednej z metod obiektu powoduje, że obiekt wykona jakąś akcję.,

kod VBA w tym artykule działa przeciwko aplikacji open Office, w której wiele obiektów, którymi manipuluje kod, jest już uruchomionych; na przykład sama aplikacja, arkusz roboczy w programie Excel, dokument w programie Word, prezentacja w programie PowerPoint, Eksplorator i Obiekty folderów w programie Outlook. Po zapoznaniu się z podstawowym układem modelu obiektowego i niektórymi kluczowymi właściwościami aplikacji, które dają dostęp do jej obecnego stanu, możesz zacząć rozszerzać i manipulować tą aplikacją biurową za pomocą VBA w pakiecie Office.,

metody

w programie Word można na przykład zmieniać właściwości i wywoływać metody bieżącego dokumentu Word przy pomocy właściwości ActiveDocument obiektu aplikacji. Ta właściwość ActiveDocument zwraca odniesienie do obiektu Document, który jest obecnie aktywny w aplikacji Word. „Zwraca odniesienie do „oznacza” daje dostęp do.”

poniższy kod robi dokładnie to, co mówi, czyli zapisuje aktywny dokument w aplikacji.,

Application.ActiveDocument.Save

odczytaj Kod od lewej do prawej, „w tej aplikacji, z dokumentem, do którego odwołuje się ActiveDocument, wywołaj metodę Save.”Pamiętaj, że Save jest najprostszą formą metody, nie wymaga od Ciebie żadnych szczegółowych instrukcji. Nakazujesz zapisywanie obiektu dokumentu i nie wymaga on od Ciebie żadnych dodatkowych danych wejściowych.

Jeśli metoda wymaga więcej informacji, te szczegóły są nazywane parametrami. Poniższy kod uruchamia metodę SaveAs, która wymaga nowej nazwy pliku.,

Application.ActiveDocument.SaveAs ("New Document Name.docx")

wartości podane w nawiasach po nazwie metody są parametrami. Tutaj nowa nazwa pliku jest parametrem metody SaveAs.

właściwości

używasz tej samej składni, aby ustawić właściwość, której używasz do odczytu właściwości. Poniższy kod wykonuje metodę, aby wybrać komórkę A1 w programie Excel, a następnie ustawić właściwość, aby umieścić coś w tej komórce.

 Application.ActiveSheet.Range("A1").Select Application.Selection.Value = "Hello World"

pierwszym wyzwaniem w programowaniu VBA jest poznanie modelu obiektowego każdej aplikacji biurowej i odczytanie składni obiektu, metody i właściwości., Modele obiektów są podobne we wszystkich aplikacjach Office, ale każdy z nich jest specyficzny dla rodzaju dokumentów i obiektów, którymi manipuluje.

w pierwszej linii fragmentu kodu znajduje się obiekt aplikacji, tym razem Excel, a następnie ActiveSheet, który zapewnia dostęp do aktywnego arkusza roboczego. Po tym jest termin nie tak znany, Zakres, co oznacza ” zdefiniuj zakres komórek w ten sposób.”Kod instruuje Range, aby tworzył się z tylko A1 jako zdefiniowanym zbiorem komórek. Innymi słowy, pierwsza linia kodu definiuje obiekt, zakres i uruchamia metodę, aby go zaznaczyć., Wynik jest automatycznie zapisywany w innej właściwości aplikacji o nazwie Selection.

druga linia kodu ustawia właściwość Value of Selection na tekst „Hello World”, a ta wartość pojawia się w komórce A1.

najprostszy kod VBA, który piszesz, może po prostu uzyskać dostęp do obiektów w aplikacji Office, z którymi pracujesz i ustawić właściwości. Na przykład możesz uzyskać dostęp do wierszy w tabeli w programie Word I zmienić ich formatowanie w skrypcie VBA.,

To brzmi prosto, ale może być niezwykle użyteczne; kiedy już napiszesz ten kod, możesz wykorzystać całą moc programowania, aby wprowadzić te same zmiany w kilku tabelach lub dokumentach, lub zrobić je zgodnie z jakąś logiką lub warunkiem. W przypadku komputera dokonywanie 1000 zmian nie różni się od dokonywania 10, więc istnieje ekonomia skali z większymi dokumentami i problemami, i to właśnie tam VBA może naprawdę zabłysnąć i zaoszczędzić czas.,

makra i Edytor Visual Basic

teraz, gdy wiesz coś o tym, jak aplikacje Office eksponują swoje modele obiektów, prawdopodobnie chcesz spróbować wywołać metody obiektu, ustawić właściwości obiektu i reagować na zdarzenia obiektu. Aby to zrobić, musisz napisać kod w miejscu i w sposób, który Office może zrozumieć; zazwyczaj za pomocą Edytora Visual Basic. Chociaż jest zainstalowany domyślnie, wielu użytkowników nie wie, że jest nawet dostępny, dopóki nie jest włączony na wstążce.

wszystkie aplikacje Office używają wstążki., Jedną z zakładek na wstążce jest zakładka Deweloper, na której można uzyskać dostęp do Edytora Visual Basic i innych narzędzi deweloperskich. Ponieważ Office domyślnie nie wyświetla karty programisty, musisz ją włączyć za pomocą następującej procedury:

aby włączyć kartę programisty

  1. na karcie Plik, wybierz Opcje, aby otworzyć okno dialogowe Opcje.

  2. wybierz Dostosuj wstążkę po lewej stronie okna dialogowego.

  3. w polu Wybierz polecenia z lewej strony okna dialogowego Wybierz popularne polecenia.,

  4. w obszarze Dostosuj wstążkę po prawej stronie okna dialogowego Wybierz główne karty z rozwijanej listy, a następnie zaznacz pole wyboru programista.

  5. wybierz OK.

Uwaga

w pakiecie Office 2007 Wyświetlono kartę programista, wybierając przycisk Office, wybierając opcje, a następnie wybierając Pokaż kartę programisty na Wstążce pole wyboru w popularnej kategorii okna dialogowego Opcje.

Po włączeniu karty programista, łatwo jest znaleźć przyciski Visual Basic i makra.

Rysunek 1., Przyciski na karcie programista

problemy z bezpieczeństwem

aby chronić użytkowników pakietu Office przed wirusami i niebezpiecznym kodem makra, nie można zapisać kodu makra w standardowym dokumencie pakietu Office, który używa standardowego rozszerzenia pliku. Zamiast tego musisz zapisać kod w pliku ze specjalnym rozszerzeniem. Na przykład nie można zapisać makr w standardowym dokumencie programu Word za pomocą .rozszerzenie docx; zamiast tego musisz użyć specjalnego dokumentu z makrem Word z .rozszerzenie docm.

Po otwarciu a.,plik docm, Office security może nadal uniemożliwiać uruchamianie makr w dokumencie, z informacją lub bez niej. Sprawdź ustawienia i opcje w Centrum zaufania we wszystkich aplikacjach pakietu Office. Ustawienie domyślne wyłącza działanie makra, ale ostrzega, że makra zostały wyłączone i daje możliwość ich ponownego włączenia dla tego dokumentu.

możesz wyznaczyć określone foldery, w których można uruchamiać makra, tworząc zaufane lokalizacje, zaufane dokumenty lub zaufanych wydawców., Najbardziej przenośną opcją jest korzystanie z zaufanych wydawców, którzy współpracują z cyfrowo podpisanymi dokumentami, które dystrybuujesz. Aby uzyskać więcej informacji na temat ustawień zabezpieczeń w konkretnej aplikacji Office, otwórz okno dialogowe Opcje, wybierz Trust Center, a następnie wybierz Trust Center Settings.

Uwaga

niektóre aplikacje biurowe, takie jak Outlook, domyślnie zapisują makra w szablonie głównym na komputerze lokalnym., Chociaż ta strategia zmniejsza lokalne problemy z zabezpieczeniami na własnym komputerze podczas uruchamiania własnych makr, wymaga strategii wdrażania, jeśli chcesz rozpowszechniać makro.

nagrywanie makra

Po wybraniu przycisku Makro na karcie programista otwiera okno dialogowe makra, które daje dostęp do podprogramów VBA lub makr, do których można uzyskać dostęp z określonego dokumentu lub aplikacji. Przycisk Visual Basic otwiera Edytor Visual Basic, w którym tworzysz i edytujesz kod VBA.,

kolejnym przyciskiem na karcie programista w programach Word i Excel jest przycisk rekord makra, który automatycznie generuje kod VBA, który może odtworzyć działania wykonywane w aplikacji. Record Macro To wspaniałe narzędzie, którego możesz użyć, aby dowiedzieć się więcej o VBA. Czytanie wygenerowanego kodu może dać wgląd w VBA i zapewnić stabilny pomost między wiedzą o biurze jako użytkowniku a wiedzą jako programista., Jedynym zastrzeżeniem jest to, że wygenerowany kod może być mylący, ponieważ edytor makr musi wprowadzić pewne założenia dotyczące twoich intencji, a te założenia niekoniecznie są dokładne.

aby nagrać makro

  1. Otwórz program Excel do nowego skoroszytu i wybierz kartę programista na wstążce. Wybierz Zapisz makro i zaakceptuj wszystkie domyślne ustawienia w oknie dialogowym Zapisz makro, w tym Macro1 jako nazwę makra i Ten skoroszyt jako lokalizację.

  2. wybierz OK, aby rozpocząć nagrywanie makra. Zauważ, jak zmienia się tekst przycisku, aby zatrzymać nagrywanie., Wybierz ten przycisk natychmiast po wykonaniu czynności, które chcesz nagrać.

  3. wybierz komórkę B1 i wpisz klasyczny pierwszy ciąg programisty: Hello World. Przestań pisać i spójrz na przycisk Zatrzymaj nagrywanie; jest on wyszarzony, ponieważ program Excel czeka na zakończenie wpisywania wartości w komórce.

  4. wybierz komórkę B2, aby zakończyć akcję w komórce B1, a następnie wybierz opcję Zatrzymaj nagrywanie.

  5. Wybierz makra na karcie programista, wybierz Macro1, jeśli nie jest zaznaczone, a następnie wybierz Edytuj, aby wyświetlić kod z Macro1 w Edytorze Visual Basic.,

Rysunek 2. Kod makra w Edytorze Visual Basic

patrząc na kod

utworzone makro powinno wyglądać podobnie do poniższego kodu.

Sub Macro1()'' Macro1 Macro'' Range("B1").Select ActiveCell.FormulaR1C1 = "Hello World" Range("B2").SelectEnd Sub

należy pamiętać o podobieństwach do wcześniejszego fragmentu kodu, który zaznaczał tekst w komórce A1, oraz o różnicach. W tym kodzie zaznaczona jest komórka B1, a następnie do aktywnej komórki zostanie zastosowany ciąg znaków „Hello World”. Cudzysłowy wokół tekstu określają wartość ciągu znaków w przeciwieństwie do wartości liczbowej.,

pamiętasz, jak wybrałeś komórkę B2, aby ponownie wyświetlić przycisk Zatrzymaj nagrywanie? Ta akcja pojawia się również jako linia kodu. Rejestrator makro rejestruje każde naciśnięcie klawisza.

linie kodu rozpoczynające się apostrofem i kolorowe na Zielono przez Edytor to komentarze wyjaśniające kod lub przypominające Tobie i innym programistom przeznaczenie kodu. VBA ignoruje każdą linię lub część linii zaczynającą się od pojedynczego cytatu. Pisanie jasnych i odpowiednich komentarzy w kodzie jest ważnym tematem, ale ta dyskusja wykracza poza zakres tego artykułu., Kolejne odniesienia do tego kodeksu w artykule nie zawierają tych czterech linii komentarzy.

gdy rejestrator makr generuje kod, używa złożonego algorytmu do określenia metod i właściwości, które zamierzałeś. Jeśli nie rozpoznajesz danej nieruchomości, dostępnych jest wiele zasobów, które mogą Ci pomóc. Na przykład w zarejestrowanym makrze rejestrator makr wygenerował kod, który odnosi się do Właściwości FormulaR1C1. Nie wiesz, co to znaczy?

Uwaga

należy pamiętać, że obiekt aplikacji jest implikowany we wszystkich makrach VBA., Nagrany kod współpracuje z aplikacją. na początku każdej linii.

korzystając z pomocy programisty

Wybierz FormulaR1C1 w nagranym makrze i naciśnij F1. System pomocy uruchamia szybkie wyszukiwanie, określa, że odpowiednie tematy znajdują się w sekcji Excel Developer w Pomocy programu Excel i wyświetla właściwość FormulaR1C1. Możesz wybrać łącze, aby dowiedzieć się więcej o właściwości, ale zanim to zrobisz, zwróć uwagę na link referencyjny modelu obiektowego Excel znajdujący się u dołu okna., Wybierz łącze, aby wyświetlić długą listę obiektów, których program Excel używa w swoim modelu obiektowym do opisu arkuszy roboczych i ich składników.

Wybierz jedną z nich, aby zobaczyć właściwości i metody, które mają zastosowanie do danego obiektu, wraz z odsyłaczami do różnych powiązanych opcji. Wiele wpisów pomocy zawiera również krótkie przykłady kodu, które mogą Ci pomóc. Można na przykład kliknąć łącza w obiekcie obramowania, aby zobaczyć, jak ustawić obramowanie w programie VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Edycja kodu

Kod obramowania wygląda inaczej niż zarejestrowane makro., Jedną z rzeczy, która może być myląca z modelem obiektowym, jest to, że istnieje więcej niż jeden sposób adresowania dowolnego obiektu, komórka A1 w tym przykładzie.

czasami najlepszym sposobem na naukę programowania jest dokonanie drobnych zmian w jakimś działającym kodzie i zobaczenie, co z tego wyniknie. Spróbuj teraz. Otwórz Macro1 w Edytorze Visual Basic i zmień kod na następujący.

Sub Macro1() Worksheets(1).Range("A1").Value = "Wow!" Worksheets(1).Range("A1").Borders.LineStyle = xlDoubleEnd Sub

końcówka

używaj Kopiuj i wklej jak najwięcej podczas pracy z kodem, aby uniknąć błędów typowania.,

nie musisz zapisywać kodu, aby go wypróbować, więc wróć do dokumentu Excel, wybierz makra na karcie programista, wybierz Macro1, a następnie wybierz Uruchom. Komórka A1 zawiera teraz tekst Wow! i ma obramowanie dwuliniowe wokół niego.

Rysunek 3. Wyniki pierwszego makra

Po prostu połączyłeś nagrywanie makr, czytanie dokumentacji modelu obiektowego i proste programowanie, aby stworzyć program VBA, który coś robi. Gratulacje!

nie zadziałało? Czytaj dalej, aby zapoznać się z sugestiami debugowania w VBA.,

porady i wskazówki dotyczące programowania

zacznij od przykładów

społeczność VBA jest bardzo duża; wyszukiwanie w Internecie może prawie zawsze dać przykład kodu VBA, który robi coś podobnego do tego, co chcesz zrobić. Jeśli nie możesz znaleźć dobrego przykładu, spróbuj rozbić zadanie na mniejsze jednostki i przeszukaj każdą z nich lub spróbuj wymyślić bardziej powszechny, ale podobny problem. Zaczynając od przykładu można zaoszczędzić wiele godzin czasu.

nie oznacza to, że darmowy i dobrze przemyślany kod jest w sieci i czeka na Ciebie., W rzeczywistości część kodu, który znajdziesz, może mieć błędy lub błędy. Chodzi o to, że przykłady, które znajdziesz online lub w dokumentacji VBA, dają ci przewagę. Pamiętaj, że nauka programowania wymaga czasu i przemyśleń. Zanim zaczniesz się spieszyć, aby użyć innego rozwiązania, aby rozwiązać swój problem, zadaj sobie pytanie, czy VBA jest właściwym wyborem dla tego problemu.

zrób prostszy problem

programowanie może szybko się skomplikować. Ważne jest, zwłaszcza dla początkujących, aby podzielić problem na najmniejsze możliwe jednostki logiczne, a następnie napisać i przetestować każdy element w izolacji., Jeśli masz przed sobą zbyt dużo kodu i się pogubisz lub zamęczysz, zatrzymaj się i odłóż problem na bok. Kiedy wrócisz do problemu, skopiuj mały fragment problemu do nowego modułu, rozwiąż go, uruchom kod i przetestuj go, aby upewnić się, że działa. Następnie przejdź do następnej części.

błędy i debugowanie

istnieją dwa główne typy błędów programistycznych: Błędy składniowe, które naruszają reguły gramatyczne języka programowania, oraz błędy run-time, które wyglądają na poprawne składniowo, ale zawodzą, gdy VBA próbuje wykonać kod.,

chociaż naprawa może być frustrująca, błędy składni są łatwe do wychwycenia; Edytor Visual Basic bije i miga na Ciebie, jeśli wpiszesz błąd składni w kodzie.

na przykład wartości łańcuchowe muszą być otoczone podwójnymi cudzysłowami w VBA. Aby dowiedzieć się, co się dzieje, gdy zamiast tego używasz pojedynczych cytatów, wróć do Edytora Visual Basic i zastąp ” Wow!”string w przykładzie kodu z' Wow!”(czyli słowo Wow zamknięte w pojedynczych cudzysłowach). Jeśli wybierzesz następny wiersz, Edytor Visual Basic zareaguje., Błąd „Compile error: Expected: expression” nie jest zbyt pomocny, ale linia, która generuje błąd, zmienia kolor na czerwony, aby powiedzieć, że masz błąd składni w tej linii, w wyniku czego ten program nie będzie działał.

wybierz OK i zmień tekst z powrotem na”Wow!”.

błędy Runtime są trudniejsze do wychwycenia, ponieważ składnia programowania wygląda poprawnie, ale kod zawodzi, gdy VBA próbuje go wykonać.,

na przykład, otwórz Edytor Visual Basic i zmień nazwę właściwości Value na ValueX w makrze, celowo wprowadzając błąd runtime, ponieważ obiekt Range nie ma właściwości o nazwie ValueX. Wróć do dokumentu programu Excel, Otwórz okno dialogowe makra i uruchom ponownie Macro1. Powinieneś zobaczyć okno z Komunikatem Visual Basic, które wyjaśnia błąd w czasie wykonywania z tekstem: „Obiekt nie obsługuje tej właściwości metody.”Chociaż ten tekst jest przejrzysty, wybierz opcję Debuguj, aby dowiedzieć się więcej.,

Po powrocie do Edytora Visual Basic Jest on w specjalnym trybie debugowania, który używa żółtego podświetlenia, aby pokazać wiersz kodu, który się nie powiódł. Zgodnie z oczekiwaniami linia zawierająca właściwość ValueX jest podświetlona.

Możesz wprowadzić zmiany w kodzie VBA, który jest uruchomiony, więc zmień ValueX z powrotem na wartość i wybierz mały zielony przycisk odtwarzania pod menu debugowania. Program powinien ponownie działać normalnie.

dobrym pomysłem jest nauczenie się, jak używać debuggera bardziej celowo dla dłuższych, bardziej złożonych programów., Co najmniej, dowiedz się, jak ustawić punkty przerwania, aby zatrzymać wykonanie w punkcie, w którym chcesz spojrzeć na KOD, jak dodawać Zegarki, aby zobaczyć wartości różnych zmiennych i właściwości w trakcie działania kodu oraz jak przejść przez kod wiersz po wierszu. Wszystkie te opcje są dostępne w menu debugowania, a poważni użytkownicy debuggera zazwyczaj zapamiętują towarzyszące im skróty klawiaturowe.,

korzystanie z materiałów referencyjnych dobrze

aby otworzyć odniesienie programisty, który jest wbudowany w pomoc pakietu Office, otwórz odniesienie pomocy z dowolnej aplikacji pakietu Office, wybierając znak zapytania na wstążce lub naciskając klawisz F1. Następnie, po prawej stronie przycisku wyszukiwania, wybierz strzałkę rozwijaną, aby filtrować zawartość. Wybierz Polecenie Developer Reference. Jeśli nie widzisz spisu treści w lewym panelu, wybierz małą ikonę książki, aby ją otworzyć, a następnie rozwiń odniesienie do modelu obiektowego.

Rysunek 5., Filtrowanie w pomocy dewelopera dotyczy wszystkich aplikacji biurowych

czas spędzony na przeglądaniu referencji modelu obiektowego się opłaca. Po zrozumieniu podstaw składni VBA i modelu obiektowego dla aplikacji biurowej, z którą pracujesz, przechodzisz od zgadywania do programowania metodycznego.

oczywiście Microsoft Office Developer Center to doskonały portal z artykułami, poradami i informacjami o społeczności.,

przeszukiwanie forów i grup

wszyscy programiści czasem utknęli, nawet po przeczytaniu każdego artykułu referencyjnego mogą znaleźć i stracić sen w nocy, myśląc o różnych sposobach rozwiązania problemu. Na szczęście Internet sprzyja społeczności programistów, którzy pomagają sobie nawzajem w rozwiązywaniu problemów programistycznych.

wyszukiwanie w sieci „office developer forum” ujawnia kilka grup dyskusyjnych. Możesz wyszukać w „Office development” lub opis swojego problemu, aby odkryć fora, posty na blogu i artykuły.,

Jeśli zrobiłeś wszystko, co mogłeś, aby rozwiązać problem, nie bój się opublikować swoje pytanie na forum programistów. Na tych forach mile widziane są posty od nowszych programistów i wielu doświadczonych programistów chętnie pomaga.

poniżej znajduje się kilka punktów etykiety, którymi należy się kierować, gdy piszesz post na forum deweloperskim:

  • zanim napiszesz Post, poszukaj na stronie FAQ lub wskazówek, których członkowie chcą, abyś przestrzegał. Upewnij się, że publikujesz treści zgodne z tymi wytycznymi i we właściwej sekcji forum.,

  • Dołącz przejrzystą i kompletną próbkę kodu i rozważ edycję kodu, aby wyjaśnić ją innym, jeśli jest częścią dłuższej sekcji kodu.

  • Opisz swój problem jasno i zwięźle oraz podsumuj wszystkie kroki, które podjąłeś w celu rozwiązania problemu. Poświęć trochę czasu, aby napisać swój post tak dobrze, jak możesz, zwłaszcza jeśli jesteś zdenerwowany lub spieszysz się. Przedstaw sytuację w sposób, który będzie miał sens dla czytelników, gdy po raz pierwszy przeczytają Oświadczenie o problemie.

  • bądź grzeczny i wyrażaj swoje uznanie.,

idąc dalej z programowaniem

chociaż ten artykuł jest krótki i tylko zarysowuje powierzchnię VBA i programowania, mam nadzieję, że wystarczy, aby zacząć.

ten dział pokrótce omawia kilka kluczowych tematów.

zmienne

w prostych przykładach w tym artykule manipulowano obiektami, które aplikacja już utworzyła. Możesz tworzyć własne obiekty w celu przechowywania wartości lub odniesień do innych obiektów w celu tymczasowego użycia w aplikacji. Są to tzw. zmienne.,

aby użyć zmiennej w VBA, musi powiedzieć VBA jaki typ obiektu reprezentuje zmienna za pomocą polecenia Dim. Następnie ustawia się jego wartość i używa jej do ustawiania innych zmiennych lub właściwości.

 Dim MyStringVariable As String MyStringVariable = "Wow!" Worksheets(1).Range("A1").Value = MyStringVariable

rozgałęzianie i zapętlanie

proste programy w tym artykule wykonują jedną linię na raz, od góry w dół. Prawdziwa moc w programowaniu pochodzi z opcji, które musisz określić, które linie kodu wykonać, na podstawie jednego lub więcej warunków, które określisz. Możesz rozszerzyć te możliwości jeszcze bardziej, gdy możesz powtórzyć operację wiele razy., Na przykład poniższy kod rozszerza Makro1.

wpisz lub wklej kod do Edytora Visual Basic, a następnie uruchom go. Postępuj zgodnie ze wskazówkami w wyświetlonym oknie wiadomości i zmień tekst w komórce A1 z Wow! na tak! i uruchom go ponownie, aby zobaczyć moc zapętlania. Ten fragment kodu pokazuje zmienne, rozgałęzianie i zapętlanie. Przeczytaj go uważnie, gdy zobaczysz go w akcji i spróbuj określić, co dzieje się podczas wykonywania każdej linii.

wszystkie moje aplikacje biurowe: przykładowy kod

oto kilka skryptów do wypróbowania; każdy rozwiązuje prawdziwy problem biurowy.,

Utwórz wiadomość e-mail w programie Outlook

Sub MakeMessage() Dim OutlookMessage As Outlook.MailItem Set OutlookMessage = Application.CreateItem(olMailItem) OutlookMessage.Subject = "Hello World!" OutlookMessage.Display Set OutlookMessage = NothingEnd Sub

pamiętaj, że są sytuacje, w których możesz automatyzować wiadomości e-mail w programie Outlook; możesz również użyć szablonów.

Usuń puste wiersze w arkuszu Excel

pamiętaj, że możesz wybrać kolumnę komórek i uruchomić to makro, aby usunąć wszystkie wiersze w wybranej kolumnie, które mają pustą komórkę.

Usuń puste pola tekstowe w programie PowerPoint

Sub RemoveEmptyTextBoxes() Dim SlideObj As Slide Dim ShapeObj As Shape Dim ShapeIndex As Integer For Each SlideObj In ActivePresentation.Slides For ShapeIndex = SlideObj.Shapes.Count To 1 Step -1 Set ShapeObj = SlideObj.Shapes(ShapeIndex) If ShapeObj.Type = msoTextBox Then If Trim(ShapeObj.TextFrame.TextRange.Text) = "" Then ShapeObj.Delete End If End If Next ShapeIndex Next SlideObjEnd Sub

pamiętaj, że ten kod przeplata się przez wszystkie slajdy i usuwa wszystkie pola tekstowe, które nie mają żadnego tekstu., Zmienna count maleje zamiast przyrostów, ponieważ za każdym razem, gdy kod usuwa obiekt, usuwa go z kolekcji, co zmniejsza liczbę.

skopiuj kontakt z programu Outlook do programu Word

Sub CopyCurrentContact() Dim OutlookObj As Object Dim InspectorObj As Object Dim ItemObj As Object Set OutlookObj = CreateObject("Outlook.Application") Set InspectorObj = OutlookObj.ActiveInspector Set ItemObj = InspectorObj.CurrentItem Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)End Sub

pamiętaj, że ten kod kopiuje aktualnie otwarty kontakt w programie Outlook do otwartego dokumentu programu Word. Ten kod działa tylko wtedy, gdy kontakt jest obecnie otwarty do wglądu w programie Outlook.

wsparcie i opinie

masz pytania lub opinie na temat pakietu Office VBA lub tej dokumentacji?, Zobacz Wsparcie i opinie Office VBA, aby uzyskać wskazówki dotyczące sposobów otrzymywania wsparcia i przekazywania opinii.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *