ФилеСистемОбјецт се користи за рад са фасциклама и датотекама повезаним са системом. Можемо га користити за приступ датотекама, фасциклама, диск јединицама и текстуалним токовима. Не само да може приступити датотекама, фасциклама и текстуалним датотекама, већ може и да креира. Ове операције нису ограничене на чврсти диск система, већ на било који уређај повезан са датотеком. То значи да можете приступити оловкама, ЦД РОМ -овима или практично повезаним мрежним погонима.
Ово су операције које можемо да радимо помоћу ФилеСистемОбјецт у ВБА:
За креирање, отварање, читање, писање и брисање текстуалних датотека.
За додавање, мењање и брисање фасцикли.
Итерација кроз датотеке и фасцикле.
За копирање и премештање датотека или фасцикли на друга места.
За проверу да ли датотека или фасцикла постоје на локацији или не
Како приступити ФилеСистемОбјецт у ВБА?
Објекат система датотека део је Мицрософт Сцриптинг Рунтиме Либрари. Да бисмо приступили ФилеСистемОбјецт -у морамо се повезати или додати референцу на Мицрософт Сцриптинг Рунтиме Либрари или Сцррун.длл.
Напомена: ФилеСистемОбјецт не подржава рад бинарних датотека јер Сцррун.длл подржава креирање и руковање датотекама помоћу ТектСтреам Објецт.
Постоје два метода за креирање ФилеСистемОбјецт у ВБА:
1: Креирање ФСО објекта помоћу методе ЦреатеОбјецт:
Овом методом прво декларишемо променљиви тип објекта. Затим поставите референцу ФСО објекта на ту променљиву помоћу ЦреатеОбјецт:
Суб ЛеарнФсо () 'Креирање променљиве објекта Дим фсо ас Објецт' Креирајте ФилеСистемОбјецт користећи Цреате Објецт Метход Сет фсо = ЦреатеОбјецт ("Сцриптинг.ФилеСистемОбјецт") Дебуг.Принт фсо.ГетБасеНаме ("Е: \ МТР \ Феб'18 МТР" ) Енд Суб
Ова метода је динамична и преносива. То значи, ако код делите са другим системима, овај код ће радити савршено. Неће бити важно коју верзију Мицрософт Рунтиме Сцриптинг верзије имате.
Једини недостатак је што нећете моћи да видите интелигенцију коју пружа ВБА. Да бисте користили сва својства и методе ФилеСистемОбјецт -а, мораћете да зависите од свог знања.
2: Креирање ФСО објекта додавањем референци на Мицрософт Рунтиме Сцриптинг
Можете директно креирати ФилеСистемОбјецт у ВБА користећи нову кључну реч. За то ћете морати да додате референцу на најновије Мицрософт Сцриптинг Рунтиме у вашем систему.
Да бисте додали референцу, идите на опцију референце у менију алата. Овде пронађите длл Мицрософт Сцриптинг Рунтиме. Проверите то и кликните на ОК.
Сада сте спремни за креирање и коришћење ФСО објекта.
Суб ЛеарнФсо () Дим фсо као нови ФилеСистемОбјецт Дебуг.Принт фсо.ГетБасеНаме ("Е: \ МТР \ Феб'18 МТР") Крај Суб
Ор
Суб ЛеарнФсо () Дим фсо као ФилеСистемОбјецт Сет фсо = Нев ФилеСистемОбјецт Дебуг.Принт фсо.ГетБасеНаме ("Е: \ МТР \ Феб'18 МТР") Крај Суб
Обоје ће радити добро.
Главна предност ове методе је што ћете моћи да видите интелигенцију ВБА. ВБА ће вам показати сва својства и методе фсо објекта. Такође ће рећи које ће променљиве прихватити и какву ће вредност вратити.
Ако овај код делите са другим системима, мораћете да им кажете да додају референцу на Сцриптинг Рунтиме из алата, у супротном ће добити грешку при компајлирању која није дефинисана од стране корисника. Дакле, то је као увоз других програмских језика.
Имајте на уму да ФСО није кључна реч. Можете га користити као назив променљиве. То је само конвенција за именовање филесистемобјецт као фсо. Зато неки људи бркају да је то кључна реч.
Обје методе стварања ФСО објеката имају своје предности и недостатке које сам споменуо објашњавајући их. Зато користите према вашим потребама. У овом чланку ћу користити други метод креирања ФилеСистемОбјецт.
Сада када знамо како да створимо ФилеСистемОбјецт у ВБА -у, искористимо ово знање за обављање неких значајних задатака. Мислим да пређемо на примере.
Пример 1: Преузмите све подмапе у одређену фасциклу
Први пример који ћемо видети је добијање назива подмапа из одређене фасцикле.
Суб ЛеарнФсо () 'варијабле које ће нам требати Дим фсо Као ФилеСистемОбјецт' Променљива за ФилеСистемОбјецт Дим фдр Као фасцикла 'Променљива за основни фолдер Дим субфдр Као фасцикла' Променљива за подмапе Дим фдрпатх Ас Стринг 'за чување путање базе фолдер 'Интиализинг тхе објецтс фдрпатх = "Д: \ Довнлоадс"' Декларисање фолдера Сет фсо = Нев ФилеСистемОбјецт 'Креирање фсо објекта Поставите фдр = фсо.ГетФолдер (фдрпатх)' Креирање објекта фасцикле дате фасцикле 'да бисте добили све назив подмапе у За сваки подфдр У фдр.СубФолдерс Отклањање грешака.Принт подфдр.Назив Следећи субфдр Крај Суб
Ово ћете добити када покренете горњи код.
Да! То је моја фасцикла за преузимање. Не концентришите се на то.
Како је ово функционисало?
Хајде да разумемо у корацима:
1: Одређивање променљивих које ће нам бити потребне
Дим фсо као ФилеСистемОбјецт 'променљиву за ФилеСистемОбјецт
Дим фдр Ас Фолдер 'Варијабла за основну фасциклу
Дим субфдр Ас Фолдер 'Променљива за подмапе
Прво смо декларисали све променљиве које ће нам требати у овом примеру. Прва променљива је наравно фсо као објекат система датотека. Две променљиве фдр и субфдр су типа фасцикле. Користићемо објекат фсо за креирање објекта типа датотеке уместо директног креирања. Тхе фдрпатх усе се користи за држање путање основне фасцикле за коју желимо да добијемо све подмапе.
2: Покретање објеката
фдрпатх = "Д: \ Преузимања" 'Декларисање фасцикле
Сет фсо = Нев ФилеСистемОбјецт 'Креирање фсо објекта
Сет фдр = фсо.ГетФолдер (фдрпатх) 'Креирање објекта фасцикле дате фасцикле
У овом кораку смо иницијализовали све објекте које смо декларисали осим субфдр. Имајте на уму да смо инцијализовали променљиву датотеке фдр користећи методу фсо објеката гетФолдер.
Метода ГетФолдер () ФилеСистемОбјецт води путању до фасцикле или директоријума као стринг и враћа објект типа датотеке.
3: петља за добијање свих назива подмапа у објекту фасцикле
За сваки подфдр У фдр.СубФолдерс
Дебуг.Принт субфдр.Наме
Нект субфдр
Овде смо користили а за сваку петљу да прођемо кроз сваку подмапу у објекту датотеке фдр. За петљу смо користили својство СубФолдерс објекта датотеке.
Својство наме користимо за добијање имена сваке подмапе. И то је учињено.
Пример 2: Набавите све путање датотека у фасцикли и њеним потфасциклама
Да бисмо добили све путање или потпуно квалификована имена свих датотека у фасцикли и њеној подмапи, морамо додати још неколико редова у пример 1 кода.
Суб ЛеарнФсо () Дим фсо Ас ФилеСистемОбјецт Дим фдр Ас Фолдер 'Променљива за основни фолдер Дим субфдр Ас Фолдер' Променљива за подмапе Дим фдрпатх Ас Стринг 'за чување путање основне фасцикле Дим фл Ас Филе' за чување објекта датотеке фдрпатх = "Д: \ довнлоадс" Сет фсо = Нев ФилеСистемОбјецт Сет фдр = фсо.ГетФолдер (фдрпатх) 'петља за добијање имена свих подмапа у За сваки подфдр У фдр.СубФолдерс За сваки фл У субфдр. Датотеке за петљу кроз сваку датотеку Дебуг.Принт фл.Патх 'добијање имена датотеке Нект фл Нект субфдр' за преузимање датотека главне фасцикле За сваки фл У фдр.Филес Дебуг.Принт фл.Патх Нект фл Енд Суб
Фолдер.Филес () метода је метода која враћа датотеке у подмапу. Метода Филе.Патх () враћа потпуну адресу датотеке.
Свако од нас има унутрашњу петљу за понављање свих датотека у подмапи главне фасцикле и њеној.
Да бисмо добили датотеке главне фасцикле користимо другу петљу.
Пример 3: Сачувајте називе датотека у ЦСВ датотеци.
У претходном примеру смо научили како да одштампате путање датотека одређених фасцикли у непосредном прозору. У овом примеру ћемо научити како да сачувамо те путање у ЦСВ датотеци. Да бисмо то учинили, потребно је само додати неколико редова коду. Видите подебљане линије кода испод.
Суб ЛеарнФсо () Дим фсо Ас ФилеСистемОбјецт Дим фдр Ас Фолдер 'Променљива за основни фолдер Дим субфдр Ас Фолдер' Променљива за подмапе Дим фдрпатх Ас Стринг 'за чување путање основне фасцикле Дим фл Ас Филе' за складиштење објекта датотеке Дим филеЛист Као ТектСтреам 'Објекат текстуалног тока фдрпатх = "Д: \ преузима" Сет фсо = Нев ФилеСистемОбјецт Сет фдр = фсо.ГетФолдер (фдрпатх) Постави филеЛист = фсо.ЦреатеТектФиле (фдрпатх & "\ Листа датотека у овој фасцикли.цсв", Тачно Фалсе) 'лооп да бисте добили име свих подмапа у За сваки подфдр У фдр.СубФолдерс Фор Евери фл У субфдр.Филес' да прође кроз сваку датотеку филеЛист.Врите фл.Патх & "," Нект фл Нект субфдр 'да бисте добили датотеке главне фасцикле За сваки фл у фдр.Филес филеЛист.Врите фл.Патх & "," Нект фл филеЛист.Цлосе Енд Суб
Овде смо прогласили нови објекат типа ФилеСтреам под именом филеЛист
Иницијализовали смо променљиву списак датотека објектом тока датотека користећи доњи ред.
Постави филеЛист = фсо.ЦреатеТектФиле (фдрпатх & "\ Листа датотека у овој фасцикли.цсв", Тачно, Нетачно)
Користимо методу ЦреатеТектФиле ФСО за креирање ФилеСтреам објекта. Он ствара текстуалну датотеку. Ова метода прихвата име датотеке са потпуном путањом. Прва променљива то чини. Користимо .цсв екстензију за креирање цсв датотеке. Друга променљива се користи за омогућавање преписивања. Трећи аргумент је Нетачан ако изјавите да то није бинарна датотека.
У петљама замењујемо дебуг.принт са филелист.Врите методом за писање сваке путање до датотеке у креираној датотеци.
Па да, момци, овако можете користити ФилеСистемОбјецт. ФСО се може користити за многе друге ствари, о којима ћемо расправљати у наредним чланцима. Ако имате било каквих недоумица у вези овог чланка упита везаног за ФСО, питајте ме у одељку за коментаре испод.
Почетак коришћења Екцел ВБА корисничких образаца| Објаснићу вам како да креирате образац у екцелу, како да користите ВБА тоолбок, како да рукујете уносима корисника и на крају како да складиштите уносе корисника. Проћи ћемо кроз ове теме користећи један пример и водич корак по корак.
ВБА променљиве у Екцелу| ВБА означава Висуал Басиц фор Апплицатионс. То је програмски језик компаније Мицрософт. Користи се са апликацијама Мицрософт Оффице као што су МСЕкцел, МС-Ворд и МС-Аццесс, док су ВБА променљиве одређене кључне речи.
Екцел ВБА променљиви опсег| У свим програмским језицима имамо спецификаторе приступа променљивим који дефинишу одакле се може приступити дефинисаној променљивој. Екцел ВБА није изузетак. ВБА такође има спецификаторе опсега.
Аргументи БиРефа и БиВала | Када се аргумент пренесе као БиРеф аргумент на другу под -функцију или функцију, шаље се референца стварне променљиве. Све промене направљене у копији променљиве ће се одразити у оригиналном аргументу.
Брисање листова без упита за потврду помоћу ВБА у програму Мицрософт Екцел | Пошто бришете листове помоћу ВБА, знате шта радите. Желели бисте да кажете Екцелу да не приказује ово упозорење и да избрише проклети лист.
Додајте и сачувајте нову радну свеску помоћу ВБА у програму Мицрософт Екцел 2016| У овом коду смо прво креирали референцу на објекат радне свеске. Затим смо га иницијализовали новим објектом радне свеске. Предност овог приступа је што можете лако да радите на овој новој радној свесци. Као чување, затварање, брисање итд
Прикажите поруку на статусној траци програма Екцел ВБА| Статусна трака у екцелу може се користити као монитор кода. Када је ваш ВБА код дугачак и обављате неколико задатака користећи ВБА, често онемогућујете ажурирање екрана тако да не видите да екран трепери.
Искључите поруке упозорења помоћу ВБА у програму Мицрософт Екцел 2016| Овај код не само да онемогућава ВБА упозорења, већ и повећава временску ефикасност кода. Да видимо како.
Популарни чланци:
50 Екцел пречица за повећање продуктивности | Убрзајте свој задатак. Ових 50 пречица ће учинити да радите још брже на Екцелу.
Функција ВЛООКУП у Екцелу | Ово је једна од најчешће кориштених и популарних функција програма Екцел која се користи за тражење вриједности из различитих распона и листова.
ЦОУНТИФ у програму Екцел 2016 | Бројте вредности са условима користећи ову невероватну функцију. Не морате да филтрирате податке да бисте рачунали одређене вредности. Цоунтиф функција је неопходна за припрему ваше контролне табле.
Како се користи функција СУМИФ у програму Екцел | Ово је још једна битна функција контролне табле. Ово вам помаже да сумирате вредности под одређеним условима.