VBA Shell

Този урок ще покаже как да използвате функцията VBA Shell.

Можем да използваме VBA Shell функция за извикване на отделна, изпълнима програма от VBA програма. Например, ако трябва да отворим Notepad от Excel, можем да използваме функцията VBA Shell, за да го направим. Ако обаждането на Shell успее, връща стойността на Windows TaskID на програмата, която е извикала. Ако извикването на Shell се провали, връща нула.

Shell има два входни параметъра: задължителен pathname за извикване на програмата и по избор стил на прозореца стойност, контролираща стила на прозореца, където ще се изпълнява програмата. The pathname стойност може да включва пътя / директорията на програмата и аргументите.

Обадете се на Shell

Този код може да бъде част от макрос за изпълнение Бележник като използвате VBA обаждане команда за извикване на Shell функция.

1 Call Shell ("бележник", vbNormalFocus)

Например:

Shell Wait

Можем да използваме VBA изчакайте команда за забавяне на извикването на Shell команда за определен период от време.

12 Application.Wait (Now + TimeValue ("00:00:05"))Call Shell ("бележник", vbNormalFocus)

Следователно 5 секунди ще минат преди извикването на командата Shell.

Връщане на грешка от функцията Shell

Ако имаме грешка в кода при извикване на Shell функция и грешката ще бъде върната и нашият код ще премине в режим на отстраняване на грешки.

Например в този макрос сме написали „бележник“ неправилно.

1 Call Shell ("бележник", vbNormalFocus)

Резултатът от стартирането на този макрос ще бъде:

VBA програмиране | Code Generator работи за вас!

Отворете съществуващ файл с Shell

Ако имаме конкретен файл, който искаме да отворим с Shell команда, можем да включим името на файла в нашия код.

1 Извикайте Shell ("Notepad.exe C: \ demo \ shell_test.txt", vbNormalFocus)

Ако изпишем неправилно името на файла, файлът няма да бъде намерен и ще се появи съобщение, което ни пита дали искаме да създадем нов файл.

Параметри, използвани от функцията Shell

The Shell функцията има 2 параметъра - името на програмата за извикване и стила на windows, който програмата ще използва. Ние използвахме vbNormalFocus в горните примери, което означава, че когато програмата (в този случай Notepad) е отворена, тя има фокус и се отваря в позиция и размер по подразбиране на компютъра.

The Shell предлага още пет опции:

vbHide Скрива прозореца и задава фокус върху този прозорец

vbМинимизиран фокус Показва прозореца като икона с фокус

vbMaximizedFocus Отваря програмата в увеличен прозорец с фокус

vbNormalNoFocus Възстановява прозореца в най -новата му позиция и размер

vbMinimizedNoFocus Показва прозореца като икона, а текущият активен прозорец остава активен

Връщане на идентификатор на процес от командата Shell

Когато изпълняваме Shell Команда, тя връща идентификационен номер на процес или задача. Можем да съхраняваме ИД на процес в променлива и да използваме този ИД на процес при изпълнение на друга команда - например TaskKill команда за затваряне на файла Notepad.

123456 Sub TestPIDЗатъмнете ProcessID като цяло числоprocessID = Shell ("бележник", vbNormalFocus)Call Shell ("Taskkill /F /PID" + CStr (processID))MsgBox ("Notepad ProcessID =" + CStr (processID))End Sub

В първия ред се отваря NotePad и на идентификатора на процеса се присвоява стойност от Windows. Съхраняваме тази стойност в променливата ProcessID. След това използваме TaskKill, за да принудим Notepad да затвори екземпляра на NotePad, който току -що отворихме. The /F превключващи сили Бележник да приключи и /PID switch казва TaskKill да търсите Notepad Идент. № на процеса стойност. Функцията CStr преобразува ProcessID към низовия формат, от който се нуждаят Shell и MsgBox на следващия ред.

Уморени ли сте от търсене на примери за VBA код? Опитайте AutoMacro!

VBA програмиране | Code Generator работи за вас!

Извикване на други програми с Shell

Shell ще отвори всяка друга програма за Windows. Например, този код извиква Excelи отваря Excel файл ‘example_workbook.xlsx’:

1 Call Shell ("Excel" "C: \ DEMO \ example_workbook.xlsx" "", vbNormalFocus)

Това показва отворения файл:

ShellExecute и ShellExecuteEx срещу командата Shell

Пространството за програмиране на Windows предлага ShellExecute и ShellExecuteEx функции, които извикват външни програми от софтуерния код. В сравнение с функцията VBA Shell, тези функции на Windows предлагат по -голяма гъвкавост, но VBA не ги поддържа и затова тази статия не ги обхваща.

Така ще помогнете за развитието на сайта, сподели с приятелите си

wave wave wave wave wave