VBA SendKeys - Jak korzystać z metody SendKeys w programie Excel VBA?

Spisie treści:

Anonim

Excel VBA SendKeys

W tym artykule zobaczymy zarys Excel VBA SendKeys. Czy kiedykolwiek myślałeś o stworzeniu programu, który automatycznie zapisuje arkusz roboczy i nie musisz w tym celu nacisnąć Ctrl + S lub Excel Save? To wydaje się być fantazją, prawda? Można to jednak zrobić. W języku VBA znajduje się instrukcja polecenia o nazwie SendKeys, która umożliwia wysyłanie naciśnięć klawiszy jako polecenia do aplikacji w taki sam sposób, jak przy wykonywaniu zadania za pomocą klawiatury. (Np. Zapisywanie pliku. Wykonujesz klawisze Ctrl + S, aby zapisać plik). Zalecane jest użycie SendKeys jako ostatniej opcji podczas automatyzacji dowolnego zadania. Powodem tego jest, jak już wspomniano, SendKeys wysyła naciśnięcia klawiszy do aplikacji, która jest obecnie aktywna. Co się stanie, jeśli w czasie działania kodu jest aktywne okno aplikacji, w którym nie chcesz, aby zmiany miały miejsce? To da nieoczekiwane rezultaty, prawda? Jest to jedyny powód, dla którego powinniśmy używać SendKeys jako ostatniej opcji podczas automatyzacji rzeczy. Można go jednak wykorzystać w małej automatyzacji, w której żadne inne środowisko aplikacji nie będzie zakłócać działania środowiska, w którym ma nastąpić zmiana.

Składnia Metoda SendKeys:

SendKeys(String As String, (Wait))

Gdzie,

Pierwszy argument „String As String” określa kombinacje klawiszy, których chcesz użyć w programie (np. Kombinacja klawiszy to Ctrl + S).

Oczekiwanie byłoby opcjonalnym parametrem, który przyjmuje wartości logiczne PRAWDA i FAŁSZ. Jeśli oczekiwanie ma wartość PRAWDA, oznacza to, że system będzie czekał na przetworzenie kluczy, a następnie przejdzie do następnego wiersza i skompiluje / uruchomi to samo. Jeśli wartość oczekiwania to FALSE (może pozostać pusta), system nie będzie czekał na przetworzenie kluczy i będzie nadal uruchamiał cały kod.

Używają pewnych metod, za pomocą których można łączyć naciśnięcia klawiszy z Ctrl, Shift lub Alt. Zobaczmy, jak możemy to zrobić. Poniżej znajduje się tabela, która określa kombinacje klawiszy dla SendKeys z Ctrl, Shift i Alt:

Klucz do połączenia Operator używany przed klawiszami kombinacji
Zmiana + (Znak plus klawiatura)
Ctrl (Znak operatora karetki)
Alt % (Znak procentu)

Co to znaczy? Oznacza to, że jeśli chcesz użyć kombinacji klawiszy jako Ctrl + S pod kodem, możesz użyć metody SendKeys i zrobić to za pomocą SendKeys, a następnie operatora Caret (^) dla Ctrl, a następnie „s”. Zapisze bieżący arkusz roboczy w pliku programu Excel.

Jak korzystać z metody SendKeys w programie Excel VBA?

Dowiemy się, jak korzystać z metody SendKeys w programie Excel przy użyciu kodu VBA.

Możesz pobrać ten szablon Excela VBA SendKeys tutaj - Szablon Excela VBA SendKeys

VBA SendKeys - Przykład nr 1

Oto kilka prostych przykładów, które pozwolą nam głębiej zapoznać się z działaniem polecenia VBA SendKeys.

W tym pierwszym przykładzie zobaczymy bardzo prostą automatyzację, która automatycznie zapisuje bieżący otwarty plik Excel. Nie musisz naciskać przycisku Zapisz ani Ctrl + S, aby zapisać plik. Wykonaj poniższe czynności, aby osiągnąć wynik.

Krok 1: Otwórz moduł z karty menu Wstaw, jak pokazano poniżej.

Krok 2: Zdefiniuj nową podprocedurę, która może przechowywać twoje makro.

Kod:

 Sub Przykład_1 () End Sub 

Krok 3: Teraz, aby zapisać dowolny plik, masz kombinację klawiszy klawiatury jako Ctrl + S. Aby przekonwertować to na kod, możemy użyć operatora daszka (^), a następnie słowa kluczowego „s” jako argumentu instrukcji SendKeys.

Kod:

 Sub Przykład_1 () Application.SendKeys ("s") End Sub 

Tutaj słowo kluczowe Aplikacja określa aplikację, do której wysyłamy naciśnięcia klawiszy (w tym przypadku aplikację Excel). „S” w nawiasach określa podobną operację klawiatury Ctrl + S.

Krok 4: Uruchom ten kod, naciskając przycisk Uruchom lub naciskając klawisz F5.

Po pomyślnym uruchomieniu tego kodu plik zostanie zapisany.

VBA SendKeys - Przykład # 2

Za chwilę zobaczymy, jak zamknąć bieżącą aplikację, wysyłając klawisze programowe za pośrednictwem kodu makra za pomocą metody SendKeys. Wykonaj poniższe kroki:

Krok 1: Napisz podprocedurę, która może przechowywać twoje makro pod modułem.

Kod:

 Sub Przykład_2 () End Sub 

Krok 2: Użyj metody Application.SendKeys, aby przekazać klawisze programowe do aplikacji. Ponieważ bieżący panel VBA można zamknąć za pomocą skrótu klawiaturowego Alt + Q, możemy użyć „% q” jako makro.

Kod:

 Sub Przykład_2 () Application.SendKeys ("% q") End Sub 

Krok 3: Naciśnij przycisk Uruchom lub F5, aby uruchomić ten kod. Jak tylko uruchomisz ten kod, bieżący edytor Visual Basic zamknie się i przejdziesz do pliku Excel.

VBA SendKeys - Przykład nr 3

Teraz napiszemy kod, który automatycznie otwiera Notatnik i automatycznie zapisuje w nim tekst. Zobacz zrzut ekranu poniżej:

Krok 1: Napisz podprocedurę, która może przechowywać twoje makro pod modułem.

Kod:

 Sub Przykład_3 () End Sub 

Call Shell pozwala systemowi otworzyć aplikację. Ścieżka jest tam, gdzie jest Notepad.exe. vbNormalFocus to opcjonalny argument, który określa nacisk na otwieranie i przywracanie aplikacji do pierwotnego rozmiaru i położenia.

Krok 2: Użyj kombinacji Klawisze połączeń i Send, aby system mógł dodać tekst w Notatniku.

Kod:

 Sub Przykład_3 () Wywołanie powłoki („C: \ Windows \ System32 \ Notepad.exe”, vbNormalFocus) Koniec Sub 

Krok 3: Tutaj dodajemy tekst „Hello VBA!” Za pomocą SendKeys do Notatnika. Prawda określa czas oczekiwania na polecenie SendKeys.

Kod:

 Sub Przykład_3 () Wywołanie powłoki („C: \ Windows \ System32 \ Notepad.exe”, vbNormalFocus) Wywołanie SendKeys („Hello VBA!”, True) End Sub 

Krok 4: Uruchom ten kod, naciskając klawisz F5 lub klikając przycisk Uruchom.

W ten sposób możemy wykorzystać metodę SendKeys do zautomatyzowania aplikacji za pomocą makra VBA.

Rzeczy do zapamiętania

  • Zachowaj ostrożność podczas korzystania z SendKeys, ponieważ może to dać nieoczekiwane rezultaty, jeśli masz otwartych wiele aplikacji.
  • Za pomocą SendKeys można zautomatyzować małe zadania, takie jak zapisywanie pliku programu Excel lub zamykanie pliku programu Excel itp.
  • Użyj metody SendKeys jako ostatniej opcji, gdy próbujesz zautomatyzować te rzeczy.

Polecany artykuł

To jest przewodnik po VBA SendKeys. Tutaj omawiamy sposób użycia metody SendKeys w Excel VBA wraz z praktycznymi przykładami i szablonem Excel do pobrania. Możesz także przejrzeć nasze inne sugerowane artykuły -

  1. VBA While Loop (przykłady z szablonem Excel)
  2. VBA Environ | Szablony Excela
  3. Poszukiwanie celu VBA (przykład)
  4. Jak zmienić nazwę arkusza roboczego w programie Excel VBA?