Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA Тема 3 (сокр) лене.doc
Скачиваний:
29
Добавлен:
29.02.2016
Размер:
1.12 Mб
Скачать

3.5 Работа с двоичными файлами

В файле такого типа можно выделить байты и блоки байтов. Двоичные файлы открываются сразу для чтения и записи.

Открытие двоичного файла

Синтаксис:

Open Путь For Binary As [#]НомерФайла

Запись данных в двоичные файлы

Синтаксис:

Put [#]НомерФайла, [НомерЗаписи], ИмяПеременной

  • НомерФайла — номер файла

  • НомерЗаписи — размер записи в байтах

- ИмяПеременной — имя переменной, содержащей данные, которые следует записать в файл

Записывает содержимое переменной в двоичный файл.

Позиционирование осуществляется также, как и в файлах последовательного доступа.

Чтение данных в двоичных файлах

Синтаксис:

Get [#]Номерфайла, [НомерЗаписи], ИмяПеременной

  • Номерфайла — номер файла.

  • НомерЗаписи — размер записи в байтах

  • ИмяПеременной — имя переменной, в которую следует поместить считанные данные

Читает данные из открытого двоичного файла в переменную.

3.6 Наиболее употребляемые инструкции и функции при работе с файлами

Приведем наиболее часто употребляемые инструкции и функции для работы с файлами.

LOF

Функция возвращает значение типа Long, представляющее размер файла в байтах, открытого с помощью инструкции Open. Для определения размера закрытого файла следует использовать функцию FileLen.

Синтаксис:

LOF(Номерфайла)

FileLen

Возвращает значение типа Long, содержащее размер файла в байтах. Синтаксис:

FileLen(Путь)

ChDir

Изменяет текущую папку.

Синтаксис:

ChDir путь

ChDrive

Изменяет текущий диск.

Синтаксис:

ChDrive диск

Например,ChDrive "D"

CurDir

Функция возвращает текущую папку

FileAttr

Возвращает значение типа Long, представляющее режим файла, открытого с помощью инструкции Open. Возвращаемые значения: 1 (для режима Input), 2 (Output), 4 (Random), 8(Append) и 32 (Binary).

Синтаксис:

FileAttr(НомерФайла, Тип)

  • НомерФайла — допустимый номер файла

  • Тип — число, указывающее характер возвращаемых данных. Если тип установлен равным 1, то функция FileAttr возвращает значение, указывающее режим работы файла

GetAttr

Возвращает значение типа Integer, определяющее атрибуты файла, каталога или папки. Значение, возвращаемое функцией GetAttr, является суммой констант, приведенных в табл.

Синтаксис:

GetAttr(путь)

.SetAttr

Устанавливает атрибуты файла.

Синтаксис:

SetAttr pathname, attributes

Атрибуты в аргументе attributes определяются как сумма констант из табл.

FileCopy

Копирует файл.

Синтаксис:

FileCopy source, destination

Аргументы:

  • source — строковое выражение, указывающее имя копируемого файла

  • destination — строковое выражение, указывающее имя результирующего файла. Аргумент destination может содержать имя каталога или папки и диска

FileDateTime

Функция возвращает дату и время последнего изменения файла.

Синтаксис:

FileDateTime(путь)

Kill

Удаляет существующий файл.

Синтаксис:

Kill путь

В аргументе путь допустимо использование символов (*) и (?) для удаления нескольких файлов по маске.

MkDir

Создает новую папку.

Синтаксис:

MkDir путь

RmDir

Удаляет существующую папку.

Синтаксис:

RmDir путь

Табл. Константы атрибутов файла

Константа

Значение

Описание

vbNormal

0

Обычный

vbReadOnly

1

Только чтение

vbHidden

2

Скрытый

vbSystem

4

Системный

vbDirectory

16

Каталог или папка

vbArchive

32

Файл был изменен после последнего резервирования

ОБЪЕКТ FILESEARCH

Объект FileSearch обладает функциональными возможностями диалогового окна Открытие документа (Open), отображаемого на экране_посредством выбора команды Файл, Открыть (File, Open). Объект FileSearch входит в объект Application и иерархически включает в себя (рис.):

  • Семейство FoundFiles, которое является списком всех файлов, возвращаемых в результате поиска

  • Семейство PropertyTests, которое является списком всех критериев поиска

Рис. Иерархическая структура объекта FileSearch

Объект FileSearch возвращается свойством FileSearch объекта Application. Объект FileSearch имеет следующие два метода.

Execute

Поиск специфицированных файлов. Синтаксис:

Execute(SortBy, SortOrder, AlwaysAccurate)

Аргументы:

  • SortBy — устанавливает способ сортировки файлов. Допустимые значения: msoSortbyFileName,msoSortbyFileType, msoSortbyLastModified и msoSortbySize

  • SortOrder — устанавливает порядок сортировки файлов.

Допустимые значения: msoSortOrderAscending и msoSortOrderDescending

- AlwaysAccurate — допустимые значения: True (поиск среди измененных файлов) и False (в противном случае)

NewSearch

Устанавливает критерии, используемые при поиске по умолчанию

Приведем наиболее часто применяемые свойства объекта FileSearch.

FileName

Устанавливает имя файла для поиска. Допустимо использование символов (*) и (?)

FileType

Задает тип файла для поиска. Допустимые значения:

MsoFileTypeAllFiles, msoFileTypeBinders, msoFile-TypeDatabases, msoFileTypeExcelWorkbooks, msoFi-leTypeOffice Files, ms о FileTypePowerPoint Presentations, msoFileTypeTemplates и msoFileTypeWordDocuments

Lookin

Задает папку для поиска файла

SearchSubFolders

Допустимые значения: True (поиск также проводить в поддиректориях) и False (в противном случае)

Следующий пример позволяет в поле со списком диалогового окна вывести Список всех файлов текущей папки:

Prrivate Sub UserForm_Initialize() ComboBoxl.Clear

With Application.FileSearch

.FileName = "*.xls"

.SearchSubFolders = False

If .Execute(SortBy:=msoSortByFileName, _

sortorder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count

ComboBoxl.AddItem .FoundFiles(i)

Next i

End If

End With

End Sub

Предыдущая программа отображает в поле со списком полные имена файлов, т. е. имя файла и путь. Для того чтобы в списке отображались только имена файлов (без пути), программу необходимо модифицировать следующим образом:

Private Sub UserForm Initialize()

Dim ИмяПапки As String

Dim ИмяФайла As String

Dim ДлинаПути As Integer

ComboBoxl.Clear

ИмяПапки = CurDir

ДлинаПути = Len(ИмяПапки)

With Application.FileSearch

.FileName = "*.xls"

.SearchSubFolders = False

If .Execute(SortBy:=msoSortByFileName,

sortorder:=msoSortOrderAscending) > 0 Then

For i = 1 To .FoundFiles.Count

ИмяФайла = Right(.FoundFiles(i), Len(.FoundFiles(i)) - ДлинаПути - 1)

ComboBoxl. Addltem ИмяФайла Next i

End If

End With

End Sub

72

Соседние файлы в предмете Информатика