Vba excel fso методы
Новая особенность для VB6 - модель объекта ( FSO ) Объектная Файловая Система, которая обеспечивает основанный на объектах инструмент для работы с папками и файлами.
Это позволяет Вам использовать знакомый синтаксис object.method с богатым набором свойств, методов, и событий, чтобы обработать папки и файлы, в дополнение к использованию традиционных методов и команд Visual Basic. Объектная модель FSO дает вашим прикладным программам способность создавать, изменять, перемещать, и удалить папки, или выяснять, если специфические папки существуют, и если так, то где. Это также дает возможность Вам получить информацию относительно папок, типа их имен, дат, когда они были созданы или в последний раз изменялись, и т.д.
Объектная модель FSO позволяет намного проще проводить обработку файлов. При обработке файлов, ваша основная цель состоит в том, чтобы сохранить данные в области - и ресурсо-эффективном, легко доступном формате. Вы сможете создавать файлы, вставлять и изменять(заменять) и выводить (считывать) данные.
Объектная модель FSO, которая содержится в библиотеке типов Scripting type library (Scrrun.Dll), поддерживает создание текстового файла и манипулирование им
через объект TextStream . Однако это не поддерживает создание или манипулирование двоичными файлами. Чтобы управлять двоичными файлами, используется команда Open с бинарным флагом.
Объекты Файловой системы
Объектная модель FSO имеет следующие объекты:
Drive(Дисковод) - Позволяет Вам получить информацию относительно дисководов присоединенных к системе, их типа, количества доступного участка памяти, их обозначения, и т.д. Обратите внимание, что "дисковод" не обязательно жесткий диск. Это может быть дисковод CD-ROM, вертуальный диск, и т.д. Также не обязательно, чтобы дисководы были физически присоединенными к системе; они могут быть также логически подсоединены через локальную сеть.
Folder(Папка) - Позволяет Вам создавать, удалять, или перемещать папки, плюс запрос системы относительно их имен, путей, и так далее.
Files(Файлы) - Позволяет Вам создавать, удалять, или перемещать файлы, плюс запрос системы относительно их имен, путей, и так далее.
FileSystemObject - Основной объект группы, с полными методами, которые позволят Вам создать, удалять, получать информацию обовсем, и вообще, управляет дисководами, папками, и файлами. Многие из методов, связанных с этим объектом дублированы в других объектах.
TextStream - Дает возможность Вам читать и писать текстовые файлы.
Программирование в Объектной Модели FSO
Программирование в Объектной Модели FSO включает три основных задачи:
1. Использование метода CreateObject или объявления переменной как объект FileSystemObject, для создания объекта FileSystemObject;
2. Использование соответствующего метода в недавно созданном объекте;
3. Вызов свойств объекта.
Объектная Модель FSO содержится в библиотеке типов, называемой Scripting, которая размещена в файле Scrrun.Dll . Если Вы пока не имеете ссылку, то поставьте ее в меню References| Microsoft Scripting Runtime. Вы можете затем использовать Object Browser, чтобы просмотреть объекты, свойства, методы и события, а также константы.
Создание объекта FileSystemObject
Первый шаг должен создать объект FileSystemObject, чтобы работать с ним. Вы можете сделать это двумя способами: Объявить переменную, как объект:
Используя метод CreateObject создать объект FileSystemObject:
Обратите внимание, что первый метод работает только в Visual Basic, в то время, как второй метод работает и в Visual Basic и в VBScript.
Использование соответствующих методов
Следующий шаг должен использовать соответствующий метод объекта FileSystemObject.
Например, если Вы хотите создавать новый объект, Вы можете использовать или CreateFolder или CreateTextFile. (Модель объекта FSO не поддерживает создание или стирание дисководов.).
Если Вы хотите удалить объекты, Вы можете использовать методы DeleteFile или DeleteFolder объекта FileSystemObject, или метод Delete объектов File или Folder.
При использовании соответствующих методов, Вы можете также копировать и перемещать файлы и папки.
Обратите внимание, что некоторые функциональные возможности в модели объекта FileSystemObject избыточны. Например, Вы можете копировать файл, использующий или метод CopyFile объекта FileSystemObject, или Вы можете использовать метод Copy объекта File. Методы работают также. И существуют, чтобы дать Вам максимум гибкости программирования.
Вызов, существующих Drives (Дисководов) , Files (Файлов) и Folders (Папок)
Чтобы получить доступ к существующему дисководу, файлу или папке, используется соответствующий метод "Get" объекта FileSystemObject:
GetDrive;
GetFolder;
GetFile;
Обратите внимание, однако, что Вы не должны использовать методы "Get" для недавно созданных объектов, так как функции "Get" уже возвращает программе обработки недавно созданный объект.
Например, если Вы создаете новую папку, используя метод CreateFolder, Вы затем не должны использовать метод GetFolder, чтобы обратиться к свойствам, типа Name, Path, Size и т.д.
Только объявите переменную функции CreateFolder, чтобы получить программу обработки недавно созданной папке, затем обратитесь к свойствам, методам, и событиям:
Обращение к Properties (Свойствам) Объекта
Как только Вы имеете код обработки объекта, Вы можете обращаться к его свойствам.
Например, если Вы хотите получить имя специфической папки. Сначала Вы создаете образец объекта, затем Вы получаете код для его обработки соответствующим методом (в этом случае метод GetFolder, так как папка уже существует):
Теперь, когда Вы имеете код обработки объекта Folder, Вы можете проверить свойство Name:
Если Вы хотите выяснять когда в последний раз, файл изменялся, используется следующий синтаксис:
Работа с Drives (Дисководами) и Folders (Папками)
Объектная модель FSO может программно работать с дисководами и папками, точно так, как Вы с Windows Explorer в интерактивном режиме. Вы можете копировать и перемещать папки, получать информацию относительно дисководов и папок, и т.д.
Получение информации относительно Drives (Дисководов) Объект Drive позволяет Вам получать информацию относительно различных дисководов, присоединенных к системе или физически или через сеть.
- Полный размера дисковода в байтах (свойство TotalSize);
- Количество доступного свободного места на дисководе в байтах (свойства AvailableSpace или FreeSpace);
- Буквенного обозначения дисковода (свойство DriveLetter);
- Какого типа дисковод, сменный, фиксированный, сетевой, CD-ROM или RAM (свойство DriveType);
- Серийный номер дисковода (свойство SerialNumber);
- Тип файловой системы использования дисковода FAT, FAT32, NTFS, и т.д (свойство FileSystem);
- Является ли дисковод доступен для использования (свойство IsReady);
- Имя общих и/или Имя объемa (свойства ShareName и VolumeName);
- Путь или корневую папку дисковода (свойства Path и RootFolder);
Пример использования объекта Drive (Дисковода)
Пример ниже показывается, как использовать объект Drive, чтобы получить полную информацию относительно дисковода.
Не забудьте, что в следующем коде Вы не будете видеть ссылку к фактическому объекту Drive, достаточно, что Вы используете метод GetDrive чтобы получить ссылку для существующего объекта Drive (в этом случае - drv):
Работа с Folders (Папками)
- Создать папку - FileSystemObject.CreateFolder
- Удалить папку - Folder.Delete или FileSystemObject.DeleteFolder
- Переместить папку - Folder.Move или FileSystemObject.MoveFolder
- Копировать папку - Folder.Copy или FileSystemObject.CopyFolder
- Возвратить имя папки - Folder.Name
- Выяснить, существует ли папка на дисководе - FileSystemObject.FolderExists
- Получить образец существующего объекта - Folder FileSystemObject.GetFolder
- Выяснить имя папки, родителя папки - FileSystemObject.GetParentFolderName
- Выяснить путь системных папок - FileSystemObject.GetSpecialFolder
Этот пример показывает использование объектов Folder и FileSystemObject, чтобы управлять папками и получать информацию о них:
Работа с Files (Файлами)
Вы можете работать с файлами в Visual Basic, используя новые объектно-ориентированные объекты FSO типа Copy, Delete, Move и OpenAsTextStream, так же, как и более старые существующие функции типа Open, Close, FileCopy, GetAttr, и т.д. Обратите внимание, что Вы можете перемещать, копировать или удалять файлы независимо от типа файла. Имеются две главных категории манипулирования файлами:
Создание, добавление или удаления данных, или чтение файлов;
Перемещение, копирование и удаление файлов;
Создание файлов и добавления данных с помощью File System Objects
Имеются три способа создать последовательный текстовый файл (иногда упоминаемый как "текстовый поток"). Один путь состоит в том, чтобы использовать метод CreateTextFile. Создаем пустой текстовый файл:
Обратите внимание, что модель объекта FSO еще не поддерживает создание произвольных (random) или двоичных (binary) файлов.
Другой путь состоит в том, чтобы использовать метод OpenTextFile объекта FileSystemObject с установкой флага ForWriting:
Или Вы можете использовать метод OpenAsTextStream с установкой флага ForWriting:
В этом пошаговом руководстве приводятся основные сведения о файловом вводе-выводе в Visual Basic. В нем описывается создание небольшого приложения, перечисляющего текстовые файлы в каталоге и анализирующего их. Для каждого выбранного текстового файла приложение предоставляет атрибуты файла и первую строку содержимого. Кроме того, предоставляется возможность записать информацию в файл журнала.
Отображаемые на компьютере имена или расположения некоторых элементов пользовательского интерфейса Visual Studio могут отличаться от указанных в следующих инструкциях. Это зависит от имеющегося выпуска Visual Studio и используемых параметров. Дополнительные сведения см. в разделе Персонализация среды IDE.
Создание проекта
В меню Файл выберите пункт Создать проект.
Откроется диалоговое окно Создание проекта .
В области Установленные шаблоны разверните узел Visual Basic и выберите элемент Windows. В середине области Шаблоны щелкните Приложение Windows Forms.
В поле Имя введите FileExplorer , чтобы задать имя проекта, а затем нажмите кнопку ОК.
Visual Studio добавит проект в обозреватель решений, после чего откроется конструктор Windows Forms.
Добавьте в форму элементы управления из приведенной ниже таблицы и установите для их свойств соответствующие значения.
Выбор папки и перечисление файлов в ней
Создайте обработчик событий нажатия Click для кнопки browseButton , дважды щелкнув этот элемент управления в форме. Откроется редактор кода.
Добавьте следующий код в обработчик событий Click .
Вызов FolderBrowserDialog1.ShowDialog открывает диалоговое окно Выбор папки. Когда пользователь нажимает OK, свойство SelectedPath передается как аргумент методу ListFiles , который добавляется в следующем шаге.
Добавьте приведенный ниже метод ListFiles .
Этот код сперва очищает элемент ListBox.
Затем метод GetFiles возвращает коллекцию строк — по одной для каждого файла в каталоге. Метод GetFiles принимает аргумент шаблона поиска, чтобы извлечь файлы, соответствующие определенному шаблону. В этом примере возвращаются только файлы с расширением TXT.
Строки, возвращаемые методом GetFiles , затем добавляются в элемент управления ListBox.
Элемент ListBox содержит список TXT-файлов в выбранной папке.
Остановите работу приложения.
Получение атрибутов файла и содержимого текстового файла
Создайте обработчик событий нажатия Click для кнопки examineButton , дважды щелкнув этот элемент управления в форме.
Добавьте следующий код в обработчик событий Click .
Этот код проверяет, выбран ли элемент в элементе ListBox . Затем он получает запись пути к файлу из элемента ListBox . Метод FileExists позволяет проверить, существует ли файл.
Путь к файлу передается как аргумент методу GetTextForOutput , который добавляется в следующем шаге. Этот метод возвращает строку, содержащую информацию о файле. Информация о файле отображается в элементе MessageBox.
Добавьте приведенный ниже метод GetTextForOutput .
Метод GetFileInfo используется в коде для получения параметров файла. Параметры файла добавляются в StringBuilder.
Метод OpenTextFileReader считывает содержимое файла в StreamReader. Первая строка содержимого файла извлекается из StreamReader и добавляется в StringBuilder .
Выберите файл в элементе ListBox и щелкните Исследовать. В окне MessageBox будет выведена информация о файле.
Остановите работу приложения.
Добавление записи в журнал
В конец обработчика событий examineButton_Click добавьте приведенный ниже код.
Код задает путь к файлу журнала, чтобы файл журнала помещался в тот же каталог, где находится выбранный файл. Запись журнала должна содержать текущие дату и время, а далее информацию о файле.
Метод WriteAllText, которому передается аргумент append со значением True , используется для создания записи в журнале.
Запустите приложение. Перейдите к текстовому файлу, выберите его в элементе ListBox , установите флажок Сохранить результаты и щелкните Исследовать. Проверьте, добавлена ли запись в файл log.txt .
Остановите работу приложения.
Использование текущего каталога
Создайте обработчик событий для события Form1_Load , дважды щелкнув форму.
Добавьте в обработчик событий приведенный ниже код.
Этот код задает текущий каталог в качестве каталога по умолчанию для обозревателя папок.
Запустите приложение. При первом нажатии кнопки Обзор открывается диалоговое окно Выбор папки с текущим каталогом.
Остановите работу приложения.
Выборочное включение элементов управления
Добавьте приведенный ниже метод SetEnabled .
Метод SetEnabled включает и отключает элементы управления в зависимости от того, выбран ли элемент в элементе ListBox .
Создайте обработчик событий SelectedIndexChanged для элемента filesListBox , дважды щелкнув элемент управления ListBox в форме.
Добавьте вызов метода SetEnabled в новый обработчик событий filesListBox_SelectedIndexChanged .
Добавьте вызов метода SetEnabled в конце обработчика событий browseButton_Click .
Добавьте вызов метода SetEnabled в конце обработчика событий Form1_Load .
Запустите приложение. Флажок Сохранить результаты и кнопка Исследовать отключены, если элемент не выбран в элементе ListBox .
Объект FileSystemObject обеспечивает в коде VBA Excel следующие возможности:
- Проверка существования диска, папки или файла.
- Создание новой папки.
- Создание текстового файла и предоставление последовательного доступа для записи.
- Открытие текстового файла и предоставление последовательного доступа для записи или чтения.
- Копирование, перемещение и удаление папок и файлов.
- Работа с путями к папкам и файлам.
- Возвращение имен дисков, папок и файлов.
Создание, свойство, методы
Создание экземпляра FileSystemObject
Создать новый экземпляр объекта FileSystemObject можно с помощью раннего или позднего связывания.
Раннее связывание
Позднее связывание
Свойство FileSystemObject
В VBA Excel у объекта FileSystemObject есть только одно свойство (Excel 2016):
Свойство | Описание |
---|---|
Drives | Возвращение коллекции всех дисков на компьютере |
Методы FileSystemObject
Свойство | Описание |
---|---|
BuildPath | Добавление имени в существующий путь |
CopyFile | Копирование одного или нескольких файлов из одного расположения в другое |
CopyFolder | Копирование одной или нескольких папок из одного расположения в другое |
CreateFolder | Создание новой папки |
CreateTextFile | Создание текстового файла и возвращение объекта TextStream, используемого для записи в файл |
DeleteFile | Удаление одного или нескольких указанных файлов |
DeleteFolder | Удаление одной или нескольких указанных папок |
DriveExists | Проверка существования указанного диска |
FileExists | Проверка существования указанного файла |
FolderExists | Проверка существования указанной папки |
GetAbsolutePathName | Возвращение полного пути из корневого каталога диска для указанного пути |
GetBaseName | Возвращение базового имени указанного файла или папки |
GetDrive | Возвращение объекта Drive, соответствующего диску в указанном пути |
GetDriveName | Возвращение имени диска указанного пути |
GetExtensionName | Возвращение расширения файла для последнего компонента в указанном пути |
GetFile | Возвращение файла по указанному пути |
GetFileName | Возвращение имени файла или папки для последнего компонента в указанном пути |
GetFileVersion | Возвращение версии файла для последнего компонента в указанном пути |
GetFolder | Возвращение папки по указанному пути |
GetParentFolderName | Возвращение имени родительской папки последнего компонента в указанном пути |
GetSpecialFolder | Возвращение пути к некоторым специальным папкам Windows |
GetStandardStream | Возвращение стандартного ввода, вывода или потока ошибок |
GetTempName | Возвращение созданного случайным образом временного файла или папки |
Move | Перемещение указанного файла или папки из одного места в другое |
MoveFile | Перемещение одного или нескольких файлов из одного места в другое |
MoveFolder | Перемещение одного или нескольких папок из одного места в другое |
OpenTextFile | Открытие файла по указанному пути и возвращение объекта TextStream, используемого для чтения, записи и добавления данных в файл |
Смотрите, как с помощью VBA Excel можно открыть папку в проводнике Windows для просмотра.
Примеры кода с FileSystemObject
Пример 1
Получение списка всех дисков на компьютере с помощью свойства Drives:
Почему мы используем VBA? Мы используем VBA для автоматизации наших задач. Обычно в Excel мы работаем только с данными, представленными в строках и столбцах в форме таблиц или чего-то подобного. Но как насчет файлов и папок, которые не являются частью Excel? Что, если нам нужно использовать эти данные из любого файла, как нам получить к нему доступ? Это где FileSystemObject пригодится.
FileSystemObject или FSO используется для доступа к системе файлов с нашего компьютера. Используя это, мы можем получить доступ ко всем папкам с файлами, которые есть на компьютере, с которым мы работаем. FSO - это в основном инструмент API, который используется для доступа к другим файлам. Теперь этого нет по умолчанию в VBA, о чем мы узнаем позже в этой статье. Давайте сначала поймем, что такое ФСО. Ранее в VBA у нас была функция DIR, которая использовалась для доступа к другим файлам и папкам с компьютера. Кодирование для функции DIR было очень сложным для работы. Но в ФСО все иначе.
Теперь есть четыре типа объектов, к которым мы можем получить доступ через FSO, и они следующие:
- Диск: который используется для доступа к указанному диску.
- Папка: используется для доступа к указанной папке.
- Файл: используется для доступа к указанному файлу.
- Текстовый поток: с помощью этого объекта мы можем читать или записывать текстовый файл.
Каждый из перечисленных выше объектов имеет свои методы для их использования. Например, если мы хотим скопировать файл, мы будем использовать метод CopyFile или удалить папку, мы будем использовать метод DeleteFolder и так далее.
Как я уже говорил выше, FSO по умолчанию отсутствует в VBA, есть два способа включить FSO в VBA.
- Первый способ заключается в установке ссылки.
- Второй способ - обратиться к библиотеке из кода.
Хотя второй метод является более сложным, всегда рекомендуется использовать первый метод, который очень прост. Давайте следовать этим основным шагам.
В VBA перейдите на вкладку Инструменты, а затем перейдите в Ссылки,
Появится окно мастера, выберите Microsoft Scripting Runtime, как показано ниже, и нажмите OK.
Теперь мы можем получить доступ к FSO в VBA. Теперь давайте рассмотрим это на нескольких примерах и узнаем об этом.
Как использовать VBA FileSystemObject в Excel?
Ниже приведены различные примеры использования функции VBA FileSystemObject в Excel.
Вы можете скачать этот шаблон Excel VBA FileSystemObject здесь - Шаблон Excel VBA FileSystemObject
Прежде чем мы начнем использовать FSO в Vba, давайте сначала научимся создавать экземпляры в VBA.
Шаг 1: В подмодуле создайте подпроцедуру,
Код:
Шаг 2: Объявите переменную как FileSystemObject, как показано ниже,
Код:
Шаг 3: Теперь нам нужно создать экземпляр, так как FSO - это объект, использующий инструкцию SET, как показано ниже,
Код:
Теперь это утверждение позволит нам создавать или изменять файлы или папки с помощью FSO.
Шаг 4: Теперь мы можем увидеть функцию IntelliSense после включения FSO. Используйте оператор точки следующим образом:
Код:
Это дало нам различные варианты, используя функцию IntelliSense. Вот как мы создаем экземпляры, используя FSO.
VBA FileSystemObject - Пример № 2
Теперь, когда мы создали экземпляр в Примере 1, давайте перейдем к его дальнейшему использованию и проверим, существует файл или папка или нет.
Шаг 1: После того, как мы создали новый FileSystemObject, используйте оператор IF, чтобы определить, существует папка или нет, следующим образом:
Код:
Шаг 2: Если папка существует, мы хотим, чтобы папка существовала, а если нет, мы хотим, чтобы она отображалась, эта папка не существует.
Код:
Шаг 3: Теперь выполните приведенный выше код и увидите результат следующим образом:
VBA FileSystemObject - Пример № 3
Теперь, так как мы обсуждали, что FSO имеет различные объекты, такие как диски. Позвольте нам выяснить, сколько места у меня есть на моем диске E.
Шаг 1: Начните с другой подпроцедуры следующим образом:
Код:
Шаг 2. Теперь объявите переменную как FileSystemObject и установите для нее новый экземпляр следующим образом:
Код:
Шаг 3: Теперь, когда мы используем свойство Drive, объявите одну переменную как тип Drive и одну переменную как double, чтобы хранить данные для пространства следующим образом:
Код:
Шаг 4: Теперь давайте создадим новый приводной объект, как показано ниже,
Код:
Это один из методов FSO, который мы используем для доступа к диску.
Шаг 5: Мы будем использовать другой метод FSO, чтобы получить свободное место на диске и сохранить его в переменной, определенной для хранения места на диске,
Код:
Шаг 6: Теперь давайте посчитаем пространство в ГБ следующим образом:
Код:
Шаг 7: Теперь отобразите значение, сохраненное для дискового пространства, используя функцию msgbox, следующим образом:
Код:
Шаг 8: Выполните приведенный выше код, чтобы узнать приведенный ниже результат,
VBA FileSystemObject - Пример № 4
Теперь давайте создадим новую папку в указанном месте с помощью FSO.
Шаг 1: Снова давайте начнем с другой подпроцедуры следующим образом:
Код:
Шаг 2: Давайте сделаем те же шаги и создадим экземпляр следующим образом:
Код:
Шаг 3: Теперь мы будем использовать метод Create Folder, чтобы создать новую папку в указанном месте,
Код:
Шаг 4. Выполните приведенный выше код и просмотрите результат на рабочем столе следующим образом.
Мы успешно создали новую папку в указанном месте.
Что нужно запомнить в VBA FileSystemObject
- FSO - инструмент приложения API.
- FSO по умолчанию недоступен в VBA.
- С FSO мы можем создавать, изменять или читать файлы и папки на компьютере.
- Мы также можем использовать FSO для наших сетевых дисков.
Рекомендуемые статьи
Это руководство к VBA FileSystemObject. Здесь мы обсудим, как использовать VBA FileSystemObject в Excel вместе с некоторыми практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
Читайте также: