Powłoka VBA

Ten samouczek pokaże, jak korzystać z funkcji VBA Shell.

Możemy użyć VBA Powłoka funkcja do wywołania oddzielnego, wykonywalnego programu z wnętrza programu VBA. Na przykład, jeśli musimy otworzyć Notatnik z Excela, możemy to zrobić za pomocą funkcji VBA Shell. Jeśli wywołanie powłoki powiedzie się, zwraca wartość Windows TaskID wywołanego programu. Jeśli wywołanie Shell nie powiedzie się, zwraca zero.

Powłoka ma dwa parametry wejściowe: wymagany nazwa ścieżki dla programu do wywołania i opcjonalnie styl okna wartość kontrolująca styl okna, w którym zostanie uruchomiony program. ten nazwa ścieżki wartość może zawierać ścieżkę/katalog programu i argumenty.

Zadzwoń do Shell

Ten kod może stanowić część makra do uruchomienia Notatnik używając Połączenie VBA polecenie wywołania Powłoka funkcjonować.

1 Call Shell("notatnik", vbNormalFocus)

Na przykład:

Powłoka czekaj

Możemy użyć VBA Czekać polecenie opóźnienia wywołania Powłoka polecenie na określony czas.

12 Application.Wait (Teraz + TimeValue("00:00:05"))Call Shell("notatnik", vbNormalFocus)

Dlatego przed wywołaniem polecenia Shell minie 5 sekund.

Zwracanie błędu z funkcji powłoki

Jeśli mamy błąd w naszym kodzie podczas wywoływania Powłoka funkcja i błąd zostanie zwrócony, a nasz kod przejdzie w tryb debugowania.

Na przykład w tym makrze błędnie napisaliśmy „notatnik”.

1 Call Shell("notatnik", vbNormalFocus)

Rezultatem uruchomienia tego makra będzie:

Programowanie VBA | Generator kodu działa dla Ciebie!

Otwórz istniejący plik za pomocą powłoki

Jeśli mamy konkretny plik, który chcemy otworzyć za pomocą Powłoka polecenie, możemy zawrzeć nazwę pliku w naszym kodzie.

1 Wywołaj powłokę ("Notepad.exe C:\demo\shell_test.txt", vbNormalFocus)

Jeśli niepoprawnie przeliterujemy nazwę pliku, plik nie zostanie znaleziony i pojawi się komunikat z pytaniem, czy chcemy utworzyć nowy plik.

Parametry używane przez funkcję Shell

ten Powłoka funkcja ma 2 parametry - nazwę programu do wywołania i styl okna, którego program będzie używał. Używamy vbNormalFocus w powyższych przykładach, co oznacza, że ​​gdy program (w tym przypadku Notatnik) jest otwarty, ma fokus i otwiera się w domyślnej pozycji i rozmiarze na komputerze.

ten Powłoka oferuje pięć innych opcji:

vbUkryj Ukrywa okno i ustawia na nim fokus

vbMinimalized Focus Wyświetla okno jako ikonę z fokusem

vbMaximizedFocus Otwiera program w zmaksymalizowanym oknie z fokusem

vbNormalNoFocus Przywraca okno w jego ostatniej pozycji i rozmiarze

vbMinimalizedNoFocus Wyświetla okno jako ikonę, a aktualnie aktywne okno pozostaje aktywne

Zwracanie identyfikatora procesu z polecenia powłoki

Kiedy prowadzimy Powłoka Polecenie, zwraca identyfikator procesu lub zadania. Możemy przechowywać identyfikator procesu w zmiennej i używać tego identyfikatora procesu podczas uruchamiania innego polecenia - na przykład Zabij zadania polecenie, aby zamknąć plik Notatnika.

123456 Podtest PIDDim ProcessID jako liczba całkowitaprocessID = Shell("notatnik", vbNormalFocus)Wywołaj powłokę("Taskkill /F /PID" + CStr(processID))MsgBox ("Notatnik ProcessID = " + CStr(processID))Napis końcowy

W pierwszym wierszu otwierany jest Notatnik, a identyfikatorowi procesu przypisywana jest wartość przez system Windows. Przechowujemy tę wartość w zmiennej ProcessID. Następnie używamy TaskKill, aby zmusić Notatnik do zamknięcia instancji Notatnika, którą właśnie otworzyliśmy. ten /F siły przełączania Notatnik do końca, a /PID przełącznik mówi Zabij zadania szukać Notatnika Identyfikator procesu wartość. Funkcja CStr konwertuje Pidentyfikator rocess do formatu ciągu, którego potrzebują Shell i MsgBox w następnym wierszu.

Masz dość wyszukiwania przykładów kodu VBA? Wypróbuj Automakro!

Programowanie VBA | Generator kodu działa dla Ciebie!

Wywoływanie innych programów za pomocą Shell

Shell otworzy każdy inny program Windows. Na przykład ten kod wywołuje Przewyższaći otwiera plik Excel „example_workbook.xlsx”:

1 Wywołaj Shell("Excel ""C:\DEMO\example_workbook.xlsx""", vbNormalFocus)

To pokazuje otwarty plik:

ShellExecute i ShellExecuteEx a polecenie powłoki

Oferta przestrzeni programistycznej Windows Wykonanie powłoki oraz ShellExecuteEx funkcje, które wywołują programy zewnętrzne z kodu oprogramowania. W porównaniu z funkcją powłoki VBA te funkcje systemu Windows oferują większą elastyczność, ale VBA ich nie obsługuje i dlatego ten artykuł ich nie obejmuje.

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave