ВБА Схелл

Овај водич ће показати како се користи функција ВБА Схелл.

Можемо користити ВБА Шкољка функција за позивање засебног, извршног програма из ВБА програма. На пример, ако морамо да отворимо Нотепад из програма Екцел, за то можемо користити функцију ВБА Схелл. Ако Схелл позив успе, враћа вредност Виндовс ТаскИД програма који је позвао. Ако позив Схелл не успе, враћа нулу.

Шкољка има два улазна параметра: обавезан патхнаме за позивање програма и опционално виндовстиле вредност која контролише стил прозора у коме ће се програм покренути. Тхе патхнаме вредност може укључивати путању / директоријум програма и аргументе.

Позовите Схелл

Овај код може бити део макроа за покретање Нотепад коришћењем ВБА позив команда за позивање Шкољка функција.

1 Цалл Схелл („нотепад“, вбНормалФоцус)

На пример:

Схелл Ваит

Можемо користити ВБА Чекати команда за одлагање позива Шкољка команду за одређени временски период.

12 Апплицатион.Ваит (Нов + ТимеВалуе ("00:00:05"))Цалл Схелл („нотепад“, вбНормалФоцус)

Стога ће проћи 5 секунди пре него што се позове Схелл команда.

Враћање грешке из Схелл функције

Ако имамо грешку у коду приликом позивања Шкољка функцију, а грешка ће бити враћена и наш код ће прећи у режим отклањања грешака.

На пример, у овом макроу погрешно смо написали „нотепад“.

1 Цалл Схелл ("нотепад", вбНормалФоцус)

Резултат покретања овог макроа ће бити:

ВБА програмирање | Генератор кода ради за вас!

Отворите постојећу датотеку са љуском

Ако имамо одређену датотеку коју желимо отворити са Шкољка наредбом, можемо укључити име датотеке у наш код.

1 Позовите Схелл ("Нотепад.еке Ц: \ демо \ схелл_тест.ткт", вбНормалФоцус)

Ако име датотеке напишемо погрешно, датотека се неће пронаћи и појавит ће се оквир с поруком који нас пита да ли желимо створити нову датотеку.

Параметри које користи функција Схелл

Тхе Шкољка функција има 2 параметра - назив програма који се позива и стил прозора који ће програм користити. Ми смо користили вбНормалФоцус у горњим примерима то значи да када се програм (у овом случају Нотепад) отвори, он има фокус и отвара се у подразумеваном положају и величини на рачунару.

Тхе Шкољка нуди још пет опција:

вбХиде Сакрива прозор и поставља фокус на тај прозор

вбМинимизедФоцус Приказује прозор као икону са фокусом

вбМакимизедФоцус Отвара програм у повећаном прозору са фокусом

вбНормалНоФоцус Враћа прозор на најновији положај и величину

вбМинимизедНоФоцус Приказује прозор као икону, а тренутно активни прозор остаје активан

Враћање ИД -а процеса из команде Схелл

Када покренемо Шкољка Команда, враћа ИД процеса или задатка. Можемо да ускладиштимо ИД процеса у променљиву и да га користимо у извођењу друге команде - на пример, ТаскКилл наредба за затварање датотеке Нотепад.

123456 Суб ТестПИДЗатамните ПроцессИД као цео бројпроцессИД = Схелл ("нотепад", вбНормалФоцус)Цалл Схелл ("Тасккилл /Ф /ПИД" + ЦСтр (процессИД))МсгБок ("НотеИД ПроцессИД =" + ЦСтр (процессИД))Енд Суб

У првом реду се отвара НотеПад и Виндовс -у ИД процеса додељује вредност. Ту вредност складиштимо у променљивој ПроцессИД. Затим користимо ТаскКилл да присилимо Нотепад да затвори инстанцу НотеПада коју смо управо отворили. Тхе прекидачке силе Нотепад до краја, и /ПИД свитцх каже ТаскКилл да потражите Нотепад ИД процеса вредност. Функција ЦСтр претвара П.роцессИД у формат низа који је потребан Схелл -у и МсгБок у следећем реду.

Уморни сте од тражења примера ВБА кода? Испробајте АутоМацро!

ВБА програмирање | Генератор кода ради за вас!

Позивање других програма помоћу Схелл -а

Схелл ће отворити било који други Виндовс програм. На пример, овај код позива Екцел, и отвара Екцел датотеку „екампле_воркбоок.клск“:

1 Цалл Схелл ("Екцел" "Ц: \ ДЕМО \ екампле_воркбоок.клск" "", вбНормалФоцус)

Ово приказује отворену датотеку:

СхеллЕкецуте и СхеллЕкецутеЕк против команде Схелл

Програмски простор Виндовс нуди СхеллЕкецуте и СхеллЕкецутеЕк функције које позивају спољне програме из програмског кода. У поређењу са функцијом ВБА Схелл, ове Виндовс функције нуде већу флексибилност, али их ВБА не подржава и стога их овај чланак не покрива.

Ви ће помоћи развој сајта, дељење страницу са пријатељима

wave wave wave wave wave