Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать
F ile S y s te m O b je c t.

790

Часть VII. Дополнительные темы

Использование объекта FileSystemObject

Объект F ile S y ste m O b je c t определен в библиотеке Windows Scripting Host и пре­ доставляет доступ к файловой системе компьютера. Этот объект часто применяется в ориентированных на использование сценариев веб-приложениях (например, использую­ щих код VBScript или JavaScript) и поддерживается в Excel 2000 и более поздних версиях программы.

П ред у преж ден ие

Зачастую библиотека Windows Scripting Host используется разработчиками вирусов, и в некоторых системах она отключается. Поэтому следует отобра­ жать соответствующее предупреждение, если приложение предназначено для использования в разных системах.

Имя F ile S y s te m O b je c t может ввести в заблуждение, поскольку этот объект на са­ мом деле состоит из нескольких объектов, каждый из которых выполняет свои функции.

Диск (Drive). Представляет диск или коллекцию дисков.

Файл (File). Представляет файл или коллекцию файлов.

Папка (Folder). Представляет папку или коллекцию папок.

Текстовый поток (TextStream). Представляет поток текста, который считывает­ ся, записывается или добавляется в текстовый файл.

На первом этапе использования объекта F ile S y s te m O b je c t создается его экземп­ ляр. Для этого используется ранее или позднее связывание.

Метод позднего связывания предусматривает использование следующих двух операторов:

Dim

F ile S y s

As

O b je c t

Set

F ile S y s

=

C re a te O b je c t( "S c rip tin g .F ile S y s te m O b je c t" )

Обратите внимание на то, что объявлена объектная переменная F ile S y s, которая имеет обобщенный тип Obj e c t, а не реальный объектный тип. Конкретный тип объекта выполняется в процессе выполнения кода.

Метод раннего связывания, используемый для создания объекта, требует установки ссылки на объектную модель Windows Scripting Host Object Model (рис. 27.2). Для уста­ новки подобной ссылки в редакторе VBE выполните команду Tools^References (Сервис^Ссылки). После установки ссылки создайте объект, воспользовавшись сле­ дующими операторами.

Dim

F ile S y s

As

F ile S y s te m O b je c t

Set

F ile S y s

=

C re a te O b je c t( "S c rip tin g .F ile S y s te m O b je c t" )

Благодаря использованию раннего связывания открывается доступ к свойству авто­ матической вставки объектов (Auto List Members) в VBE. Это свойство облегчает иден­ тификацию применяемых пользователями свойств и методов. Для получения дополни­ тельных сведений относительно объектной модели воспользуйтесь приложением Object Browser (для его вызова нажмите клавишу <F2>).

Рассматриваемые в дальнейшем примеры демонстрируют различные приложения объекта **

Глава 27. Управление файлами с помощью VBA

793

Отображение расширенной информации о файле

В примере из этого раздела отображается расширенный набор свойств файла, находя­ щегося в определенной папке. Отображаемая информация зависит от выбранного типа файла. Например, файлы изображений обладают такими свойствами, как Camera M od el (Модель камеры) и D im e n s io n s (Размеры); звуковые файлы имеют такие свойства, как A r t i s t (Исполнитель), T i t l e (Название), D u r a t io n (Длительность) и т.д.

Фактический набор свойств зависит от используемой версии Windows. Версия Win­ dows Vista поддерживает 267 свойств, a Windows 7 — еще больше. Ниже представлен код процедуры, создающий список свойств файла для активного рабочего листа.

Sub L is t F ile P r o p e r t ie s ()

 

Dim

i As Long

As

O b je ct

' IS h e llD is p a tc h 4

Dim

o b jS h e ll

Dim

o b jF o ld e r

As

O b je ct

' F o ld e r3

'Создание объекта

Set o b jS h e ll = C re a te O b je c t( " S h e ll. A p p lic a tio n " )

'Указание любой папки

1

Set

o b jF o ld e r

=

o b jS h e ll.N a m e sp a ce ( "C : \ ")

Перечень

свойств

 

 

For

i =

0

To

500

 

 

C e lls

( i

+

1,

1) = _

 

Next

o bj F o ld e r . G e tD e ta ils O f(o b j F o ld e r . Ite m s , i )

 

i

 

 

 

 

End

Sub

 

 

 

 

 

П р ед уп р еж д ен и е

К сожалению, значения свойств отличаются в различных версиях Windows. Например, в Windows 2000 свойство T it le имеет значение 11. В Windows ХР этому свойству присуще значение 10, а в Windows Vista — значение 21.

Ниже представлена процедура F ile ln f o , работа которой основана на объекте Windows S h e ll .A p p lic a tio n . В процессе выполнения этой процедуры запрашивает­ ся название папки (с помощью функции G e tD ire c to ry , код которой здесь не показан), а затем выводятся сведения, описывающие 41 свойство (и это далеко не все) для каждого файла в папке.

Sub F ile ln f o

()

 

 

 

Dim

с As

Long, г

As Long, i As Long

Dim

FileNam e

As

O b je c t

1 F o ld e rIte m 2

Dim

o b jS h e ll

As

O b je c t

1 IS h e llD is p a tc h 4

Dim

o b jF o ld e r

As

O b je c t

1F old er3

'Создание объекта

Set o b jS h e ll = C re a te O b je c t( " S h e ll. A p p lic a tio n " )

'Запрос названия папки

Set

o b jF o ld e r

= o b jS h e ll.N am espace(G etD irectory)

^

' Вставка

заголовков на активном листе

 

W orksheets.Add

 

с =

0

=

0

То

4 0

 

For

i

 

с

=

с

+

1