Какво е FileSystemObject (FSO) и как да го използвам във VBA Excel?

Съдържание:

Anonim

FileSystemObject се използва за работа с папки и файлове, свързани със системата. Можем да го използваме за достъп до файлове, папки, устройство и текстови потоци. Той не само има достъп до файлове, папки и текстови файлове, но също така може да създава. Тези операции не се ограничават до твърдия диск на системата, а до всяко устройство, свързано към файла. Това означава, че имате достъп до писалки, компактдискове или практически свързани мрежови устройства.

Това са операциите, които можем да извършим с помощта на FileSystemObject във VBA:

За създаване, отваряне, четене, писане и изтриване на текстови файлове.

За добавяне, промяна и изтриване на папки.

Итерация чрез файлове и папки.

За копиране и преместване на файлове или папки на други места.

За да проверите дали файл или папка съществува на място или не

Как да получите достъп до FileSystemObject във VBA?

Обектът на файловата система е част от Microsoft Scripting Runtime Library. За достъп до FileSystemObject трябва да се свържем или да добавим препратка към Microsoft Scripting Runtime Library или Scrrun.dll.

Забележка: FileSystemObject не поддържа работа с двоични файлове, тъй като Scrrun.dll поддържа създаването и манипулирането на файлове с помощта на TextStream Object.

Има два метода за създаване на FileSystemObject във VBA:

1: Създаване на FSO обект с помощта на метода CreateObject:

Използвайки този метод, първо декларираме променлив тип обект. След това задайте препратката на FSO обект към тази променлива с помощта на CreateObject:

Sub LearnFso () 'Създаване на променлива на обекта Dim fso As Object' Създайте FileSystemObject с помощта на Създаване на набор от методи на обект fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub 

Този метод е динамичен и преносим. Това означава, че ако споделяте кода с други системи, този код ще работи перфектно. Няма да има значение каква версия на Microsoft Runtime Scripting версия имате.

Единственият недостатък е, че няма да можете да видите intellisense, предоставена от VBA. Ще трябва да разчитате на вашите познания, за да използвате всички свойства и методи на FileSystemObject.

2: Създаване на FSO обект чрез добавяне на препратка към Microsoft Runtime Scripting

Можете директно да създадете FileSystemObject във VBA, като използвате новата ключова дума. За това ще трябва да добавите препратка към най -новата среда на Microsoft Scripting Runtime във вашата система.

За да добавите препратка, отидете на опцията за препратки в менюто с инструменти. Тук намерете dll на Microsoft Scripting Runtime. Проверете го и щракнете върху OK.

Сега сте готови да създадете и използвате FSO обекта.

Sub LearnFso () Dim fso като нов FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub 

Или

Sub LearnFso () Dim fso като FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub 

И двете ще работят добре.

Основно предимство на този метод е, че ще можете да видите интелигентността на VBA. VBA ще ви покаже всички свойства и методи на fso обект. Той също така ще покаже какви променливи ще приеме и каква стойност ще върне.

Ако споделяте този код на други системи, ще трябва да им кажете да добавят препратка към Scripting Runtime от инструменти, в противен случай те ще получат грешка при компилиране, че потребителският тип не е дефиниран. Така че е все едно да импортирате други езици за програмиране.

Имайте предвид, че FSO не е ключова дума. Можете да го използвате като име на променлива. Това е просто конвенция за именуване на fileystemobject като fso. Ето защо някои хора бъркат това като ключова дума.

И двата метода за създаване на FSO обекти имат своите предимства и недостатъци, които споменах, докато ги обяснявах. Така че използвайте според вашите нужди. В тази статия ще използвам втория метод за създаване на FileSystemObject.

Сега, когато знаем как да създадем FileSystemObject във VBA, нека използваме това знание при изпълнението на някои смислени задачи. Искам да кажа, нека преминем към примерите.

Пример 1: Вземете цялата подпапка в определена папка

Първият пример, който ще видим, е да получим имена на подпапки от конкретна папка.

Sub LearnFso () 'променящи променливи, които ще ни трябват Dim fso As FileSystemObject' Променлива за FileSystemObject Dim fdr Като папка 'Променлива за базовата папка Dim subfdr Като папка' Променлива за подпапките Dim fdrpath As String 'за съхраняване на пътя на базата папка 'Intializing the objects fdrpath = "D: \ Downloads"' Деклариране на папката Set fso = New FileSystemObject 'Създаване на fso обект Задайте fdr = fso.GetFolder (fdrpath)' Създаване на обекта на папката на дадената папка 'цикъл, за да получите всички име на подпапки във За всеки subfdr Във fdr.SubFolders Debug.Print subfdr.Name Следващ subfdr End Sub 

Когато стартирате горния код, това получавате.

Да! Това е папката ми за изтегляне. Не се концентрирайте върху това.

Как работи това?

Нека разберем на стъпки:

1: Деклариране на променливи, които ще ни трябват

Dim fso като променлива на FileSystemObject за FileSystemObject

Dim fdr As Folder 'Променлива за основната папка

Dim subfdr As Folder 'Променлива за подпапките

Първо декларирахме цялата променлива, която ще ни е необходима в този пример. Разбира се, първата променлива е fso като обект на файлова система. Двете променливи fdr и subfdr са от тип папка. Ще използваме обекта fso, за да създадем обект от тип файл, вместо да създаваме директно. The fdrpath use се използва за задържане на пътя на основната папка, от която искаме да получим всички подпапки.

2: Инициализиране на обектите

fdrpath = "D: \ Изтегляния" 'Деклариране на папката

Set fso = New FileSystemObject 'Създаване на fso обект

Задайте fdr = fso.GetFolder (fdrpath) 'Създаване на обект на папка на дадената папка

В тази стъпка инициализирахме всички обекти, които бяхме декларирали, освен subfdr. Обърнете внимание, че сме инициализирали променливата на fdr файла, използвайки метода fso обекти getFolder.

Методът GetFolder () на FileSystemObject приема пътя на папка или директория като низ и връща обект от тип файл.

3: цикъл за получаване на всички имена на подпапки в обекта на папката

За всеки subfdr В fdr.SubFolders

Debug.Print subfdr.Name

Следващ подфдр

Тук използвахме a за всеки цикъл, за да преминем през всяка подпапка в обекта на fdr файл. Използвахме свойството SubFolders на файловия обект за цикъл.

Използваме свойството name, за да получим имената на всяка подпапка. И е направено.

Пример 2: Вземете всички пътища на файлове в папка и нейните подпапки

За да получим всички пътища или напълно квалифицирани имена на всички файлове в папка и нейната подпапка, трябва да добавим още няколко реда в пример 1 код.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Променлива за базовата папка Dim subfdr As Folder' Променлива за подпапките Dim fdrpath As String 'за съхраняване на пътя на базовата папка Dim fl As File' за съхраняване на обект на файл fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'цикъл за получаване на всички имена на подпапки във For each subfdr In fdr. Debug.Print fl.Path 'получаване на име на файл Next fl Следващ subfdr', за да получите файловете на главната папка За всеки fl В fdr. Файлове Debug.Print fl.Path Next fl End Sub 

Методът Folder.Files () е методът, който връща файловете в подпапка. Методът File.Path () връща пълния адрес на файла.

Всеки от нас има вътрешен цикъл за повторение на всички файлове в подпапката на основната папка и нейната.

За да получим файловете от основната папка използваме друг цикъл.

Пример 3: Запазете имената на файловете в CSV файл.

В предишния пример научихме как да отпечатваме файловите пътища на конкретни папки в непосредствения прозорец. В този пример ще научим как да запишем тези пътища в CSV файл. За да направим това, просто трябва да добавим няколко реда към кода. Вижте по -долу редовете с удебелен код.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Променлива за базовата папка Dim subfdr As Folder' Променлива за подпапките Dim fdrpath As String 'за съхраняване на пътя на основната папка Dim fl As File' за съхраняване на файлов обект Dim fileList Като TextStream 'A textstream object fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", Вярно, False) 'цикъл за получаване на всички имена на подпапки в за всеки subfdr във fdr.subFolders за всеки fl в subfdr.files', за да премине през всеки файл fileList.Write fl.Path & "," Next fl следващ subfdr ', за да получите файлове от главната папка За всеки fl В fdr.Files fileList.Write fl.Path & "," Следващ fl fileList.Close End Sub 

Тук декларирахме нов обект от тип FileStream с име fileList

Инициализирахме променливата на списъка с файлове с обект на поток на файлове, използвайки долния ред.

Задайте fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)

Използваме метода CreateTextFile на FSO, за да създадем обект FileStream. Той създава текстов файл. Този метод приема името на файл с пълен път. Първата променлива го прави. Използваме разширението .csv за създаване на csv файл. Втората променлива се използва, за да позволи презапис. Третият аргумент е False, за да декларирате, че не е двоичен файл.

В циклите заменяме debug.print с filelist.Write метод, за да запишем всеки път на файла в създадения файл.

Така че да, момчета, ето как можете да използвате FileSystemObject. FSO може да се използва за много други неща, които ще обсъдим в предстоящите статии. Ако имате някакви съмнения относно тази статия от заявка, свързана с FSO, попитайте ме в секцията за коментари по -долу.

Първи стъпки с потребителските формуляри на Excel VBA| Ще обясня как да създам формуляр в excel, как да използвам VBA инструментариума, как да боравя с потребителските входни данни и накрая как да съхранявам потребителските входни данни. Ще преминем през тези теми, като използваме един пример и стъпка по стъпка ръководство.

VBA променливи в Excel| VBA означава Visual Basic за приложения. Това е език за програмиране от Microsoft. Използва се с приложения на Microsoft Office като MSExcel, MS-Word и MS-Access, докато VBA променливите са специфични ключови думи.

Променлив обхват на Excel VBA| Във всички езици за програмиране имаме променливи спецификатори за достъп, които определят от къде може да се получи достъп до определена променлива. Excel VBA не е изключение. VBA също има спецификатори на обхвата.

Аргументи на ByRef и ByVal | Когато един аргумент се предава като аргумент ByRef на различна под -функция или функция, се изпраща препратката към действителната променлива. Всички промени, направени в копието на променливата, ще се отразят в първоначалния аргумент.

Изтриване на листове без подкани за потвърждение с помощта на VBA в Microsoft Excel | Тъй като изтривате листове с помощта на VBA, знаете какво правите. Бихте искали да кажете на Excel да не показва това предупреждение и да изтрие проклетия лист.

Добавяне и запазване на нова работна книга с помощта на VBA в Microsoft Excel 2016| В този код първо създадохме препратка към обект на работна книга. И тогава го инициализирахме с нов обект на работна книга. Ползата от този подход е, че можете лесно да извършвате операции с тази нова работна книга. Като запазване, затваряне, изтриване и т.н.

Показване на съобщение в лентата за състоянието на Excel VBA| Лентата на състоянието в Excel може да се използва като монитор на кодове. Когато вашият VBA код е дълъг и изпълнявате няколко задачи с помощта на VBA, често деактивирате актуализацията на екрана, така че да не виждате този екран да трепти.

Изключете предупредителните съобщения с помощта на VBA в Microsoft Excel 2016| Този код не само деактивира сигналите за VBA, но също така увеличава ефективността на кода във времето. Да видим как.

Популярни статии:

50 преки пътища в Excel за повишаване на вашата производителност | Бъдете по -бързи в задачата си. Тези 50 преки пътища ще ви накарат да работите още по -бързо в Excel.

Функцията VLOOKUP в Excel | Това е една от най -използваните и популярни функции на excel, която се използва за търсене на стойност от различни диапазони и листове.

COUNTIF в Excel 2016 | Пребройте стойностите с условия, използвайки тази невероятна функция. Не е необходимо да филтрирате данните си, за да броите конкретни стойности. Функцията Countif е от съществено значение за подготовката на вашето табло.

Как да използвате функцията SUMIF в Excel | Това е друга основна функция на таблото. Това ви помага да обобщите стойностите при конкретни условия.