ВБА Енвиронмент | Како се користи функција Енвиронмент у програму ВБА Екцел?

Екцел ВБА ЕНВИРОН (Животна средина)

Тхе ВБА ЕНВИРОН функција (означава ЖИВОТНА СРЕДИНА) која се може категорисати као информациона функција јер ова функција враћа вредности за променљиве окружења оперативног система. Променљиве околине (оперативни систем) садрже информације о профилима свих корисника, корисничком имену, корисничком профилу, почетној фасцикли за корисника итд. Ова функција враћа вредност низа.

Синтакса

Ова функција има само један аргумент који је „Израз‘. Можемо одредити нумерички положај (целобројна вредност) која представља нумерички положај променљиве околине у табели променљивих околине или име променљиве себе.

Ако одредимо нумерички положај, тада функција враћа променљиву окружења и њену вредност са знаком једнакости између.

Ако наведемо име променљиве, функција враћа једину вредност.

Излаз:

Како се користи функција Енвиронмент у ВБА?

Овај ВБА ЕНВИРОН Екцел образац можете преузети овде - ВБА ЕНВИРОН Екцел Темплате

Пример # 1

Отворите командну линију помоћу функције ЕНВИРОН у ВБА.

Да бисте учинили исто, кораци би били:

Уметните командно дугме помоћу „Убаци“ команда доступна у „Контроле“ група у „Програмер“ картицу или користите тастер Екцел пречице (Алт + Ф11).

Ако је „Програмер“ картица није видљива, а затим следите следеће кораке да бисте картицу учинили видљивом.

Кликните на „Датотека“ и изабрати 'Опције' са списка.

Изаберите ‘Прилагоди траку’ у левом менију и означите поље за потврду „Програмер“ картицу и кликните на 'У РЕДУ'.

Сада „Картица програмера“ је видљиво.

Током уметања командног дугмета, ако и даље притиснемо Тастер АЛТ, тада ће ивице командног дугмета бити заједно са обрубом ћелија. Промените својства уметнутог командног дугмета помоћу контекстуалног менија који добијамо десним кликом на „Командно дугме“.

Прозор својстава

Да бисмо написали ВБА код за командно дугме, потребно је да изаберемо командно дугме и изаберемо „Прикажи код“ из контекстуалног менија.

Напишите код на следећи начин:

Звали смо 'Шкољка' функција за уписивање наредбе за покретање програма (у нашем случају то је командна линија).

Ми смо користили „ЦомСпец“, што је скраћеница за „Спецификатор наредбе“.

Сада изађите из ВБЕ и кликните на командно дугме. Приказали смо командну линију.

Пример # 2

Претпоставимо да желимо да издвојимо имена датотека и детаље за одабрану мапу на следећи начин.

Кораци да се уради исто су:

Напуните ћелије Б2: Х9 светло наранџастом бојом.

Направите налепницу помоћу „Убаци“ команда у „Контроле“ група у „Програмер“.

Креирајте доле приказане ознаке и уредите својства попут Наслов, БацкЦолор, БацкСтиле, БордерСтиле, Сенка

Креирајте комбинирани оквир на следећи начин користећи Цомбо Бок наредба (једна од АцтивеКс контрола) доступна у Уметни заповеди у Контроле група у Програмер.

Након што креирамо Цомбо Бок у Екцелу на следећи начин, можемо променити својства.

Додаћемо код за списак који ће се приказати у комбинованом оквиру помоћу Виев Цоде наредба у контекстуалном менију.

То је код за „Изаберите директоријум“ ЦомбоБок.

То је код за „Сортирај по" ЦомбоБок.

То је код за „Изаберите поруџбину“ ЦомбоБок.

Направићемо оквир са листом који садржи све типове датотека, тако да их корисник може одабрати да у резултат добије само оне типове датотека. Да бисте учинили исто, одаберите „Оквир са списком (АцтивеКс контрола)" од "Уметни”Наредба у“Контроле”Група у„Програмер”Таб.

Превуците оквир са списком као што је приказано испод.

Промените својства оквира са списком на следећи начин.

Да бисте додали типове датотека у оквир са листом, користите следећи код.

Упишите код у „Ова радна свеска“.

Шифра:

 Привате Суб Воркбоок_Опен () Дим АррФилеТипе (25) Ас Вариант АррФилеТипе (0) = "Мицрософт Екцел 97-2003 Ворксхеет (.клс)" АррФилеТипе (1) = "Мицрософт Оффице Екцел Ворксхеет (.клск)" АррФилеТипе (2) = " Мицрософт Екцел Мацро-Енаблед Ворксхеет (.клсм) "АррФилеТипе (3) =" Ворд Доцумент 97-2003 (.доц) "АррФилеТипе (4) =" Ворд Доцумент 2007-2010 (.доцк) "АррФилеТипе (5) =" Текст Документ (.ткт) "АррФилеТипе (6) =" Адобе Ацробат документ (.пдф) "АррФилеТипе (7) =" Стиснута (зипована) мапа (.Зип) "АррФилеТипе (8) =" ВинРАР архива (.рар) "АррФилеТипе (9) = "Подешавања конфигурације (.ини)" АррФилеТипе (10) = "ГИФ датотека (.гиф)" АррФилеТипе (11) = "ПНГ датотека (.пнг)" АррФилеТипе (12) = "ЈПГ датотека (.јпг) "АррФилеТипе (13) =" Звук МП3 формата (.мп3) "АррФилеТипе (14) =" Датотека М3У (.м3у) "АррФилеТипе (15) =" Формат обогаћеног текста (.ртф) "АррФилеТипе (16) =" МП4 видео (.мп4) "АррФилеТипе (17) =" Видео цлип (.ави) "АррФилеТипе (18) =" Виндовс Медиа Плаиер (.мкв) "АррФилеТипе (19) =" СРТ датотека (.срт) "АррФилеТипе (20) = „ПХП датотека (.пхп)“ АррФилеТипе (21) = "Фирефок ХТМЛ документ (.хтм, .хтмл)" АррФилеТипе (22) = "Каскадни документ табеле стилова (.цсс)" АррФилеТипе (23) = "ЈСцрипт датотека скрипте (.јс)" АррФилеТипе (24) = "КСМЛ документ ( .кмл) "АррФилеТипе (25) =" Виндовс пакетна датотека (.бат) "Лист2.ФилеТипесЛистБок.Лист = АррФилеТипе Енд Суб 

Уметните поља за потврду користећи исти „Уметни”Наредба у“Контроле”Група у„Програмер”И промените својства за уметнуто „Поља за потврду“ Користећи „Својства“ наредба доступна у истој групи након избора објеката.

Уметните командне тастере помоћу „Убаци“ наредба доступна у истој групи и промените својства попут Наслов и друга својства такође.

Формирали смо целу структуру. Сада морамо да напишемо код.

Активирајте „Режим дизајна“ и кликните десним тастером миша на „Преузми све детаље о датотекамаДугме за одабир „Виев Цоде“Из контекстуалног менија за додавање кода дугмета.

Прво ћемо у модулу прогласити неку променљиву.

Испод је код додат у „Преузми све детаље о датотекамаДугме.

Шифра:

 Привате Суб ФетцхФилесБтнЦоммандБуттон_Цлицк () иРов = 14 фПатх = Енвирон ("ХОМЕПАТХ") & "\" & СелецтТхеФолдерЦомбоБок.Валуе Иф фПатх "" Затим поставите ФСО = Нев Сцриптинг.ФилеСистемОбјецт Иф ФСО.ФолдерЕксе = фПатх Соурце. ГетФолдер (фПатх) Иф Схеет2.ИнцлудингСубФолдерсЦхецкБок.Валуе = Труе тхен ИсСубФолдер = Труе Елсе ИсСубФолдер = Фалсе Иф СоурцеФолдер.Филес.Цоунт = 0 Тада МсгБок "Не постоје датотеке у овој фасцикли" & вбНевЛине & провери вашу путању до мапе & в. опет !! ", вбИнформатион Излаз Под Крај Ако Крај Ако Позив ЦлеарРесулт Ако ФетцхАллТипесОфФилесЦхецкБок.Валуе = Истина Затим позива ЛистФилесИнФолдер (СоурцеФолдер, ИсСубФолдер) Позив РесултСортинг (клАсцендинг," Ц14 "," Д14 "," Е14 ") остало позива ЛистФилесИнФолдерКстн (СоурцеФолдер , ИсСубФолдер) Сортирање резултата позива (клАсцендинг, "Ц14", "Д14", "Е14") Енд Иф ФилесЦоунтЛабел.Цаптион = иРов - 14 Елсе МсгБок "Изабрана путања не постоји !!" & вбНевЛине & вбНевЛине & "Изаберите тачан и покушајте поново !!", вбИнформатион Крај ако други начин МсгБок "Пут до мапе не може бити празан !!" & вбНевЛине & вбНевЛине & "", вбИнформатион Енд Иф Енд Суб 

Дефинишите „ЦлеарРесулт“ функција у модулу. Да бисте уметнули модул, изаберите ‘ТхисВоркбоок’ онда „Убаци“ и онда „Модул“.

У модул упишите следећи код.

Код за ЦлеарРесулт

Постоји више потпрограма попут „ЛистФилесИнФолдер“, „ЛистФилесИнФолдерКстн“, ‘РесултСортинг’, дефинисаћемо све ове потпрограме у модулу.

„ЛистФилесИнФолдер“

Шифра:

 Јавна подлистаФилесИнФолдер (СоурцеФолдер Ас Сцриптинг.Фолдер, ИнцлудеСубфолдерс Ас Боолеан) У случају грешке Настави следеће за сваки ФилеИтем у СоурцеФолдер.Филе 'приказују својства датотеке Ћелије (иРов, 2) .Формула = иРов - 13 ћелија (иРов, 3) .Формула = ФилеИтем.Наме Целлс (иРов, 4) .Формула = ФилеИтем.Патх Целлс (иРов, 5) .Формула = Инт (ФилеИтем.Сизе / 1024) Целлс (иРов, 6) .Формула = ФилеИтем.Типе Целлс (иРов, 7) .Формула = ФилеИтем.ДатеЛастМодифиед Целлс (иРов, 8) .Одаберите Селецтион.Хиперлинкс.Адд Анцхор: = Селецтион, Аддресс: = _ ФилеИтем.Патх, ТектТоДисплаи: = "Цлицк Хере то Опен" 'Целлс (иРов, 8) .Формула = "= ХИПЕРЛИНК (" "" & ФилеИтем.Патх & "" "," "" & "Кликните овде да бисте отворили" & "" ")" иРов = иРов + 1 'број следећег реда Следећи ФилеИтем ако садржи подмапе, а затим за сваку потфасциклу У СоурцеФолдер.СубФолдерс ЛистФилесИнФолдер СубФолдер, Труе Нект СубФолдер Енд Иф Сет ФилеИтем = Нотхинг Сет СоурцеФолдер = Ништа није постављено ФСО = Нотхинг Енд Суб 

„ЛистФилесИнФолдерКстн“

 Публиц Суб ЛистФилесИнФолдерКстн (СоурцеФолдер Ас Сцриптинг.Фолдер, ИнцлудеСубфолдерс Ас Боолеан) О грешци Настави следећи Дим ФилеАрраи као варијанта ФилеАрраи = Гет_Филе_Типе_Арраи За сваки ФилеИтем у СоурцеФолдер.Филес Цалл РетурнФилеТипе (ФилеИтем.Типе, ФилеАртТрав. 2) .Формула = иРов - 13 ћелија (иРов, 3) .Формула = ФилеИтем.Наме Целлс (иРов, 4) .Формула = ФилеИтем.Патх Целлс (иРов, 5) .Формула = Инт (ФилеИтем.Сизе / 1024) Целлс (иРов, 6) .Формула = ФилеИтем.Типе Целлс (иРов, 7) .Формула = ФилеИтем.ДатеЛастМодифиед Целлс (иРов, 8) .Одаберите Селецтион.Хиперлинкс.Адд Анцхор: = Селецтион, Аддресс: = _ ФилеИтем.Патх, ТектТоДисплаи : = "Кликните овде да бисте отворили" 'Ћелије (иРов, 8) .Формула = "= ХИПЕРЛИНК (" "" & ФилеИтем.Патх & "" "," "& &" Кликните овде да бисте отворили "&" "") "" иРов = иРов + 1 'број следећег реда Крај ако је следећи ФилеИтем Иф ИнцлудеСубфолдерс онда за сваку потфасциклу у СоурцеФолдер.СубФолдерс ЛистФилесИнФолдерКстн СубФолдер, Труе Нект СубФолдер Енд Иф Сет ФилеИтем = Ништа није постављено СоурцеФолдер = Ништа није постављено ФСО = Ништа Крај Под 

‘РесултСортинг’

 Суб РесултСортинг (клСортОрдер Ас Стринг, сКеи1 Ас Стринг, сКеи2 Ас Стринг, сКеи3 Ас Стринг) Ранге ("Ц13"). Селецт Ранге (Селецтион, Селецтион.Енд (клДовн)). Селецт Ранге (Селецтион, Селецтион.Енд (клТоРигхт) ) .Одаберите Селецтион.Сорт Кеи1: = Ранге (сКеи1), Ордер1: = клСортОрдер, Кеи2: = Ранге (сКеи2 _), Ордер2: = клАсцендинг, Кеи3: = Ранге (сКеи3), Ордер3: = клСортОрдер, Хеадер _: = клГуесс, ОрдерЦустом: = 1, МатцхЦасе: = Фалсе, Ориентатион: = клТопТоБоттом _, ДатаОптион1: = клСортНормал, ДатаОптион2: = клСортНормал, ДатаОптион3: = _ клСортНормал Ранге ("Б14"). Изаберите Енд Суб 

У „ЛистФилесИнФолдерКстн“ потпрограм, позвали смо функцију именовану „РетурнФилеТипе“ и ‘ГетФилеТипеАрраи’, морамо дефинисати функције у истом модулу.

„РетурнФилеТипе“

Шифра:

 Јавна функција РетурнФилеТипе (филеТипе Ас Стринг, ФилеАрраи Ас Вариант) Као Боолеан Дим и Ас Интегер ИсФилеТипеЕкистс = Фалсе Фор и = 1 То УБоунд (ФилеАрраи) + 1 Иф ФилеАрраи (и - 1) = филеТипе тхен ИсФилеТипеЕкистс = Труе Екит Фор ЕлсеистсФилеТипеЕ Функција Лажни крај ако је следећи крај 

‘ГетФилеТипеАрраи’

Шифра:

Јавна функција Гет_Филе_Типе_Арраи () Као варијанта Дим и, ј, ТоталСелецтед Ас Интегер Дим аррЛист () Ас Стринг ТоталСелецтед = 0 Фор и = 0 То Схеет2.ФилеТипесЛистБок.ЛистЦоунт - 1 Иф Схеет2.ФилеТипесЛистБок.Селецтед (и) = Труе тхен ТоталСелецтед = Труе тхен ТоталСелецтед ТоталСелецтед + 1 Енд Иф Нект РеДим аррЛист (0 То ТоталСелецтед - 1) Ас Стринг ј = 0 и = 0 Фор и = 0 То Схеет2.ФилеТипесЛистБок.ЛистЦоунт - 1 Иф Схеет2.ФилеТипесЛистБок.Селецтед (и) = Труе тхен аррЛист (ј ) = Лефт (Схеет2.ФилеТипесЛистБок.Лист (и), ИнСтр (1, Схеет2.ФилеТипесЛистБок.Лист (и), "(") - 1) ј = ј + 1 Енд Иф Нект Гет_Филе_Типе_Арраи = аррЛист Енд Фунцтион 

Имамо командно дугме с натписом „Извези у Екцел датотеку“, треба да напишемо код за ово дугме на следећи начин:

У модулу дефинишите именовану потпрограм ‘Екпорт_то_екцел’.

Шифра:

 Суб Екпорт_то_екцел () У случају грешке Идите на грешку Дим клАпп као нови Екцел.Апплицатион Дим клВБ Ас Нев Воркбоок Сет клВБ = клАпп.Воркбоокс.Адд 'клВБ.Адд клАпп.Висибле = Фалсе ТхисВоркбоок.Ацтивате Ранге ("Б13"). Изаберите опсег ("Б13"). Селецтион, Селецтион.Енд (клДовн)). Изаберите опсег (Селецтион, Селецтион.Енд (клТоРигхт)). Изаберите Селецтион.Цопи клАпп.Висибле = Труе клВБ.Ацтивате клВБ.Схеетс ("Схеет1"). Селецт клВБ.Схеетс (" Схеет1 "). Ранге (" Б2 "). ПастеСпециал Пасте: = клПастеВалуес клВБ.Схеетс (" Схеет1 "). Целлс.Селецт клВБ.Схеетс (" Схеет1 "). Целлс.ЕнтиреЦолумн.АутоФит клВБ.Схеетс (" Схеет1 ") .Ранге ("Б2"). Изаберите Екит Суб ерр: МсгБок ("Дошло је до грешке при извозу. Покушајте поново") Енд Суб 

Имамо још једно командно дугме са називом „Извези у текстуалну датотеку“. Написаћемо код за командно дугме на следећи начин:

У овом коду можемо видети да имамо кориснички образац који треба да дизајнирамо користећи следеће кораке:

Десни клик на ‘Лист2 (Пример2)’ лист и изаберите „Убаци“ и онда „УсерФорм“ из менија.

Дизајнирајте УсерФорм помоћу алата из алата.

Ми смо користили „Ознаке“, „Комбинована кутија“, 'Поље за текст' и „Командна дугмад“ за Усерформ и променили су наслов и име за све компоненте.

За први командно дугме (ОК), морамо написати код на следећи начин:

Шифра:

 Привате Суб ЦоммандБуттон1_Цлицк () Затамни иСеператор као низ ако је ЦомбоБок1.Валуе = "Остало" Тада је иСеператор = ТектБок1.Валуе Елсе иСеператор = ЦомбоБок1.Валуе Енд Иф Иф иСеператор = "" Онда ако МсгБок ("Здраво, нисте изабрали ниједан делиметар." & вбНевЛине & вбНевЛине & _ "Биће веома тешко читати текстуалну датотеку, без одређеног граничника", вбИесНо) = вбДа Затим позвати текстуалну датотеку (иСеператор) Елсе Екит Суб Енд Иф Елсе Селецт Цасе ЦомбоБок1.ЛистИндек Цасе 0: иСеператор = " , "Случај 1: иСеператор =" | " Случај 2: иСеператор = "вбТаб" Случај 3: иСеператор = ";" Текст датотека са завршетком позива (иСеператор) Искључи ме Крај ако заврши Суб 

Звали смо „Текстуална датотека“ функција у потпрограму за командно дугме због чега треба да дефинишемо „Текстуална датотека“ функција у модулу.

Шифра:

 Подтекст датотека (иСеператор као низ) Дим иРов, иЦол Дим иЛине, ф ТхисВоркбоок.Ацтивате Ранге ("Б13"). Селецт ТоталРовНумбер = Ранге (Селецтион, Селецтион.Енд (клДовн)). Цоунт - 12 Иф иСеператор "вбТаб" тхен Опен ТхисВоркбоок.Патх & "\ Филе1.ткт" За излаз као # 1 Принт # 1, "Цлосе # 1 Опен ТхисВоркбоок.Патх &" \ Филе1.ткт "За додавање као # 1 за иРов = 13 у ТоталРовНумбер иЛине =" " За иЦол = 2 до 7 иЛине = иЛине & иСеператор & Ћелије (иРов, иЦол) .Вредност Следећи испис # 1, иЛине Следеће затварање # 1 Елсе Опен ТхисВоркбоок.Патх & "\ Филе1.ткт" За излаз као # 1 Одштампај # 1 , "" Цлосе # 1 Опен ТхисВоркбоок.Патх & "\ Филе1.ткт" За Додај као # 1 За иРов = 13 У ТоталРовНумбер иЛине = "" За иЦол = 2 До 7 иЛине = иЛине & вбТаб & Целлс (иРов, иЦол) .Валуе Нект Принт # 1, иЛине Нект Цлосе # 1 Енд Иф ф = Схелл ("Ц: \ ВИНДОВС \ нотепад.еке" & ТхисВоркбоок.Патх & "\ Филе1.ткт", вбМакимизедФоцус) МсгБок "Ваша датотека је сачувана у" & ТхисВоркбоок.Патх & "\ Филе1.ткт" Крај под 

За командно дугме 2 (Откажи), треба да напишемо следећи код. Двапут кликните на дугме за отказивање да бисте написали код.

За комбинирани оквир за одабир спецификатора напишите сљедећи код.

За УсерФорм напишите следећи код.

За ‘Дохвати све врсте датотека’ у поље за потврду напишите следећи код.

За 'Листа кутија' за типове датотека напишите следећи код.

За ‘СелецтТхеОрдер’ комбинирани оквир, напишите следећи код.

Шифра:

 Привате Суб СелецтТхеОрдерЦомбоБок_Цханге () Селецт Цасе (СелецтТхеОрдерЦомбоБок.Валуе) Цасе "Асцендинг" Иф СортБиЦомбоБок.Валуе = "Филе наме" тхен Цалл РесултСортинг (клАсцендинг, "Ц14", "Е14", "Г14") Енд Иф СортБиалбоок = "Тип датотеке" Затим позовите РесултСортинг (клАсцендинг, "Ф14", "Е14", "Ц14") Енд Иф Иф СортБиЦомбоБок.Валуе = "Филе сизе" Затим позовите РесултСортинг (клАсцендинг, "Е14", "Ц14", "Г14" ) Енд Иф Иф СортБиЦомбоБок.Валуе = "Последња измена" Затим позовите РесултСортинг (клАсцендинг, "Г14", "Ц14", "Е14") Енд Иф Цасе "Десцендинг" Ако је СортБиЦомбоБок.Валуе = "Назив датотеке" Затим позовите РесултСортинг (клДесцендинг , "Ц14", "Е14", "Г14") Енд Иф Иф СортБиЦомбоБок.Валуе = "Тип датотеке" Затим позовите РесултСортинг (клДесцендинг, "Ф14", "Е14", "Ц14") Енд Иф Иф СортБиЦомбоБок.Валуе = " Величина датотеке "Затим позовите РесултСортинг (клДесцендинг," Е14 "," Ц14 "," Г14 ") Енд Иф Иф СортБиЦомбоБок.Валуе =" Последња измена "Затим позовите РесултСортинг (клДесцендинг," Г14 "," Ц14 "," Е14 ") Енд Иф Цасе Дефаулт Екит Суб Енд Изаберите Енд Суб 

За 'Сортирај по' комбинирани оквир, написаћемо следећи код.

Шифра:

 Привате Суб СортБиЦомбоБок_Цханге () Изаберите случај (СелецтТхеОрдерЦомбоБок.Валуе) Случај "Узлазно" Ако је СортБиЦомбоБок.Валуе = "Име датотеке" Затим позовите РесултСортинг (клАсцендинг, "Ц14", "Е14", "Г14") Енд Иф СортБиЦомуеБок. "Тип датотеке" Затим позовите РесултСортинг (клАсцендинг, "Ф14", "Е14", "Ц14") Енд Иф Иф СортБиЦомбоБок.Валуе = "Филе сизе" Затим позовите РесултСортинг (клАсцендинг, "Е14", "Ц14", "Г14" ) Енд Иф Иф СортБиЦомбоБок.Валуе = "Последња измена" Затим позовите РесултСортинг (клАсцендинг, "Г14", "Ц14", "Е14") Енд Иф Цасе "Десцендинг" Ако је СортБиЦомбоБок.Валуе = "Назив датотеке" Затим позовите РесултСортинг (клДесцендинг , "Ц14", "Е14", "Г14") Енд Иф Иф СортБиЦомбоБок.Валуе = "Тип датотеке" Затим позовите РесултСортинг (клДесцендинг, "Ф14", "Е14", "Ц14") Енд Иф Иф СортБиЦомбоБок.Валуе = " Величина датотеке "Затим позовите РесултСортинг (клДесцендинг," Е14 "," Ц14 "," Г14 ") Енд Иф Иф СортБиЦомбоБок.Валуе =" Последња измена "Затим позовите РесултСортинг (клДесцендинг," Г14 "," Ц14 "," Е14 ") Енд Иф Цасе Дефаулт Екит Суб Енд Изаберите Енд Суб 

Сада смо написали читав код. Сада можемо одабрати жељену фасциклу и тип датотеке и пронаћи списак датотека које можемо сортирати према „Име датотеке“, „Тип датотеке“, „Величина датотеке“ или „Последња измена“ и листу можемо извести у екцел или текстуална датотека.

Ствари које треба запамтити

Ако вредност за коју смо одредили „Енвстринг“ аргумент није у табели низа окружења, функција ЕНВИРОН враћа низ нулте дужине.