VBA Excel. Операторы чтения и записи в файл

Чтение и запись в файл, открытый с помощью оператора Open. Операторы Input, Line Input, Write и функция EOF. Примеры использования в VBA Excel.

Операторы чтения и записи в файл

Оператор Input #

Оператор Input # считывает данные из открытого файла с последовательным доступом и присваивает эти данные переменным.

Оператор Input # используется только с файлами, открытыми в режиме Input или Binary. При прочтении стандартные строковые или числовые значения присваиваются переменным без изменения.

Синтаксис оператора Input #:

Input#Номер_файла,Переменные

Компоненты оператора Input #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Переменные – обязательный параметр, представляющий из себя список переменных, разделенных запятой, которым присваиваются значения, считанные из файла.

Особенности применения оператора Input #:

  • Элементы данных в файле должны быть указаны в том же порядке, что и переменные в списке Переменные, и соответствовать им по типу данных. Если переменная числовая, а данные текстовые, этой переменной будет присвоено нулевое значение.
  • Если при чтении данных достигнут конец файла, чтение прерывается и возникает ошибка. Для ее предупреждения в коде VBA Excel используется функция EOF.
  • Чтобы данные из файла могли быть правильно прочитаны и записаны в переменные с помощью оператора Input #, они должны быть записаны в файл с помощью оператора Write #. Он обеспечивает правильное разделение каждого из полей (элементов) данных.

Оператор Line Input #

Оператор Line Input # считывает одну строку из открытого файла с последовательным доступом и присваивает ее значение строковой переменной.

Оператор Line Input # считывает из файла по одному символу до тех пор, пока не встретится символ возврата каретки (Chr(13)) или последовательность символа возврата каретки и перевода строки (Chr (13) + Chr(10)).

Синтаксис оператора Line Input #:

Line Input#Номер_файла,Переменная

Компоненты оператора Line Input #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Переменная – обязательный параметр, представляющий из себя имя переменной, объявленной как String или Variant, которой присваивается строка, считанная из файла.

Оператор Write #

Оператор Write # записывает данные в файл с последовательным доступом.

Синтаксис оператора Write #:

Write#Номер_файла,[Данные]

Компоненты оператора Write #:

  • Номер_файла – обязательный параметр, представляющий из себя номер, присвоенный файлу при открытии с помощью оператора Open.
  • Данные – необязательный параметр, представляющий из себя одно или несколько числовых или строковых выражений, разделенных запятой, которые нужно записать в файл.

Особенности применения оператора Write #:

  • Данные, записанные с помощью оператора Write #, считываются из файла с помощью оператора Input #.
  • Если опустить параметр Данные и добавить запятую после Номер_файла, в файл будет добавлена пустая строка.
  • Несколько выражений в списке Данные могут быть разделены точкой с запятой или запятой.
  • Числовые данные всегда записываются с точкой в качестве разделителя целой и дробной части.
  • Оператор Write # вставляет запятые между элементами и прямые парные кавычки вокруг строк при их записи в файл.
  • После записи в файл последнего символа из параметра Данные оператор Write # вставляет символы возврата каретки и перевода строки (Chr (13) + Chr(10)).

Процедура

Запись текста в файл

  • Используйте WriteAllText метод для записи текста в файл, указав файл и текст, который требуется записать. В этом примере строка “This is new text.” записывается в файл с именем test.txt, при этом текст добавляется к тексту, имеющемуся в файле.

    My.Computer.FileSystem.WriteAllText(“C:TestFolder1test.txt”,”This is new text to be added.”, True)

Запись набора строк в файл

  • Выполните цикл по коллекции строк. Используйте WriteAllText метод для записи текста в файл, указав конечный файл и строку, которую требуется добавить, и присвоив параметру append значение True.

    В этом примере имена файлов в каталоге Documents and Settings записываются в файл FileList.txt, при этом между каждой записью вставляется символ перевода строки для удобства чтения.

    For Each foundFile As String InMy.Computer.FileSystem.GetFiles(“C:Documents and Settings”) foundFile = foundFile & vbCrLf My.Computer.FileSystem.WriteAllText( “C:Documents and SettingsFileList.txt”, foundFile, True)Next

Спасибо за сообщение

Ваше сообщение было получено и отправлено администратору.

Close

Объект файловой системы (FSO)

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

Sr.No. Тип объекта и описание
1

Привод

Драйв — это объект. Содержит методы и свойства, которые позволяют собирать информацию о диске, подключенном к системе.

2

приводы

Диски это коллекция. Он предоставляет список дисков, подключенных к системе, физически или логически.

3

файл

Файл является объектом. Он содержит методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать файл.

4

файлы

Файлы это коллекция. Он предоставляет список всех файлов, содержащихся в папке.

5

скоросшиватель

Папка — это объект. Он предоставляет методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать папки.

6

Папки

Папки это коллекция. Он предоставляет список всех папок в папке.

7

TextStream

TextStream — это объект. Это позволяет разработчикам читать и писать текстовые файлы.

Привод

Драйв — это объект. Содержит методы и свойства, которые позволяют собирать информацию о диске, подключенном к системе.

приводы

Диски это коллекция. Он предоставляет список дисков, подключенных к системе, физически или логически.

файл

Файл является объектом. Он содержит методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать файл.

файлы

Файлы это коллекция. Он предоставляет список всех файлов, содержащихся в папке.

скоросшиватель

Папка — это объект. Он предоставляет методы и свойства, которые позволяют разработчикам создавать, удалять или перемещать папки.

Папки

Папки это коллекция. Он предоставляет список всех папок в папке.

TextStream

TextStream — это объект. Это позволяет разработчикам читать и писать текстовые файлы.

Привод

Диск — это объект, который обеспечивает доступ к свойствам конкретного диска или общей сетевой папки. Следующие свойства поддерживаются объектом Drive

  • Доступное пространство
  • DriveLetter
  • Тип вождения
  • Файловая система
  • Свободное место
  • Готов
  • Дорожка
  • Корневая папка
  • Серийный номер
  • ShareName
  • Общий размер
  • VolumeName

пример

Шаг 1. Прежде чем приступить к написанию сценариев с использованием FSO, мы должны включить Microsoft Scripting Runtime. Чтобы сделать то же самое, перейдите в Инструменты → Ссылки, как показано на следующем снимке экрана.

Excel FSO в VBScript

Шаг 2. Добавьте «Microsoft Scripting RunTime» и нажмите «ОК».

Excel FSO в VBScript

Шаг 3 — Добавьте данные, которые вы хотели бы записать в текстовый файл, и добавьте командную кнопку.

Excel FSO в VBScript

Шаг 4 — Теперь пришло время для сценария.

PrivateSub fn_write_to_text_Click()DimFilePathAsStringDimCellDataAsStringDimLastColAsLongDimLastRowAsLongDim fso AsFileSystemObjectSet fso =NewFileSystemObjectDim stream AsTextStreamLastCol=ActiveSheet.UsedRange.Columns.CountLastRow=ActiveSheet.UsedRange.Rows.Count‘ Create a TextStream. Set stream = fso.OpenTextFile(“D:TrySupport.log”, ForWriting, True) CellData = “” For i = 1 To LastRow For j = 1 To LastCol CellData = Trim(ActiveCell(i, j).Value) stream.WriteLine “The Value at location (” & i & “,” & j & “)” & CellData Next j Next i stream.Close MsgBox (“Job Done”)End Sub

Выход

При выполнении сценария убедитесь, что курсор помещен в первую ячейку рабочего листа. Файл Support.log создается, как показано на следующем снимке экрана в разделе «D: Try».

Excel FSO в VBScript

Содержимое файла показано на следующем снимке экрана.

Excel FSO в VBScript

Написать текстовый файл в Excel VBA

Мы все сталкиваемся с такой ситуацией, когда нам приходилось помещать огромные данные в файлы Excel, но в конечном итоге мы столкнулись с ситуацией, когда размер этого файла с огромными данными увеличился настолько, что нам пришлось преобразовать их в текст. файл. Из-за этого мы не могли ни работать над этим файлом, ни сохранять файл в формате Excel. Такого рода ситуации мы наблюдали во многих проектах, где нам нужно извлечь данные из базы данных. Извлечение данных из базы данных возможно, если для этого использовать текстовый файл. Текстовый файл не зависает, и мы можем хранить как можно больше данных и таблиц в одном текстовом файле без сбоев файла. Для этого нам нужно преобразовать файл Excel в текстовый файл. Хотя это не большая задача, когда это повторяющееся действие и выполнение может занять огромное время.

Чтобы избежать этого, у нас есть процесс в VBA, с помощью которого мы можем преобразовать файл Excel в текстовый файл без ущерба для данных. Таким образом, мы можем сохранить огромный набор данных в текстовом файле, уменьшив и сжав размер файла.

Понимание кода написания текстового файла на VBA довольно сложно, но это не сложно понять.

Процесс последовал:

  • File Path: путь к файлу, в котором мы сохранили файл Excel.
  • Режим: для каких целей нам нужно открыть файл. Это может быть режим только для чтения или цель записи, или нам нужно использовать его для добавления данных.
  • Номер файла: По этому мы можем подсчитать количество времени, которое мы использовали для файла Excel для текстового файла.

Как написать текстовый файл в Excel VBA?

Мы научимся писать текстовый файл с использованием кода VBA в Excel на нескольких примерах.

Вы можете скачать этот шаблон Excel для текстового файла VBA здесь – VBA Шаблон для текстового файла записи Excel

Пример № 1 – VBA запись текстового файла

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

Шаг 1: Перейдите к пункту меню « Вставка» и выберите « Модуль», как показано ниже.

vba-write-text-file.jpg.webp

Шаг 2: Теперь в открытом модуле напишите подкатегорию VBA Write Text или мы можем выбрать любое имя по нашему выбору.

Код:

Sub WriteTextFile2 () End Sub

vba-write-text-file-2.png.webp

Шаг 3: На первом этапе кодирования объявите переменную myFile как String, как показано ниже.

Код:

Sub WriteTextFile2 () Dim myFile As String End Sub

vba-write-text-file-3.png.webp

Шаг 4: В назначенной переменной укажите местоположение файла, который нам нужно конвертировать из Excel в текст. Здесь мы назвали этот файл как Test с расширением. TXT, как показано ниже.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = “D: VPB File April Files Final location Final Input.txt” End Sub

vba-write-text-file-4.png.webp

Шаг 5: Как мы видели в описании VBA Write Text File, мы сначала откроем файл Excel, а затем добавим данные из Excel в текстовый файл с командной строкой ниже.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = “D: VPB File April Files Final location Final Input.txt” Открыть myFile для добавления в качестве # 1 End Sub

vba-write-text-file-5.png.webp

Шаг 6: Теперь давайте поместим некоторый текст в текстовый файл, который мы хотели бы видеть, как показано ниже, с помощью Write # 1 для первой таблицы. Мы ввели несколько марок автомобилей с названиями моделей и техническими характеристиками.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = “D: VPB File April Files Final location Final Input.txt” Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, ” миль », 2000 г. Запись №1, « Тойота », « Этиос », 2000 г., « миль », End Sub

vba-write-text-file-6.png.webp

Шаг 7: Теперь закройте первую таблицу, как показано ниже.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = “D: VPB File April Files Final location Final Input.txt” Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, ” миль “, 2000 г. Запись # 1, ” Тойота “, ” Etios “, 2000 г., ” мили “, Close # 1 End Sub

vba-write-text-file-7.png.webp

Шаг 8: Мы также хотели бы увидеть сообщение, когда процесс будет завершен.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = “D: VPB File April Files Final location Final Input.txt” Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, ” миль “, 2000 Запись # 1, ” Тойота “, ” Etios “, 2000, ” миль “, Закрыть # 1 MsgBox” Сохранено “End Sub

vba-write-text-file-8.png.webp

Шаг 9: Теперь скомпилируйте код и запустите его, нажав кнопку Play, расположенную под строкой меню, как показано ниже. Если ошибки не найдены, мы получим окно сообщения с сообщением « Сохранено», как показано ниже.

vba-write-text-file-9.png.webp

Шаг 10: Теперь перейдите к месту, которое мы упомянули в коде выше, мы увидим текстовый файл с именем Test, как показано ниже.

vba-write-text-file-10.png.webp

Теперь, чтобы проверить, содержит ли этот текстовый файл те же данные, которые мы ввели через VBA, откройте его. Мы увидим, что те же данные были введены.

vba-write-text-file-11.png.webp

Пример №2 – VBA запись текстового файла

Есть и другой путь к той же работе.

Шаг 1: В примере мы будем использовать тот же код, который мы написали выше, но в используемом коде будут небольшие изменения. Давайте рассмотрим тот же код, который показан в примере-1.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, “miles”, 2000 Write # 1, “Toyota”, “Etios”, 2000, “мили”, Закрыть # 1 MsgBox “Сохранено” End Sub

vba-write-text-file-12.png.webp

Шаг 2. Теперь вместо файла выберите активную книгу с ActiveWorkbook, как показано ниже.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = ActiveWorkbook. Откройте myFile для добавления в качестве # 1. Запись # 1, «Ford», «Figo», 1000, «миль», 2000. Запись # 1, «Toyota», «Etios», 2000, «миль», Close # 1 MsgBox «Сохранено “End Sub

vba-write-text-file-13.png.webp

Шаг 3: Теперь выберите Путь из выпадающего списка ActiveWorkBook .

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = ActiveWorkbook.Path Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, “miles”, 2000 Write # 1, “Toyota”, “Etios”, 2000, “мили”, Close # 1 MsgBox “Сохранено” End Sub

vba-write-text-file-14.png.webp

Шаг 4: Затем выберите путь, куда мы должны добавить данные в текстовый файл, разделенные амперсандом.

Код:

Sub WriteTextFile2 () Dim myFile As String myFile = ActiveWorkbook.Path & ” VPB File” Открыть myFile для добавления в качестве # 1 Запись # 1, “Ford”, “Figo”, 1000, “miles”, 2000 Write # 1, ” Тойота », « Этиос », 2000, « мили », Close # 1 MsgBox« Сохранено »End Sub

vba-write-text-file-15.png.webp

Шаг 5: Теперь снова скомпилируйте код и запустите его после этого. При успешном завершении запуска мы получим сообщение как сохраненное .

vba-write-text-file-16.png.webp

Теперь снова перейдите по тому пути, где мы сохранили этот файл с кодом, и посмотрите, сохранен ли текстовый файл там или нет.

vba-write-text-file-17.png.webp

Теперь откройте файл, чтобы проверить, правильно ли добавлены данные или нет. Мы обнаружим, что данные добавляются аналогично тому, как это было в примере-1.

vba-write-text-file-11.png.webp

Плюсы Excel VBA Написать текстовый файл

  • Нам даже не нужно открывать какой-либо файл, чтобы добавить данные.
  • Если данные огромны, мы можем добавить данные из Excel в текст, не открывая файл. Таким образом, нет проблем с обработкой файла.
  • Если мы перейдем к процессу, описанному в примере 2, нам даже не нужно будет указывать путь, по которому мы хотим увидеть выходной текстовый файл.

То, что нужно запомнить

  • В процессе, показанном в примере 1, мы можем поместить файл в то место, где мы хотим увидеть вывод.
  • В процессе, показанном в примере 2, он автоматически рассмотрит расположение файла, в котором есть VBA-код VBA Write Text File.
  • Мы даже можем выбрать данные из любого файла Excel, который мы хотим преобразовать в текстовый файл.
  • Мы можем выбрать и создать любое число в виде таблицы, которую мы хотим добавить в текстовый файл.

Рекомендуемые статьи

Это руководство к текстовому файлу VBA. Здесь мы обсудим, как написать текстовый файл в Excel с использованием кода VBA, а также с практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи –

  1. VBA InStr объяснил с помощью примеров
  2. Целочисленный тип данных VBA
  3. VBA ISNULL объяснено с примерами
  4. Транспонировать диапазон в VBA

Открытие и закрытие файла

Прежде чем работать с файлом, необходимо создать объект файла с помощью инструкции Open. Инструкция имеет следующий формат:

Open <Имя файла> For <Режим> [Access <Доступ>] [<Блокировка>]                 As [#]<Дескриптор> [Len=<Длина>]

В параметре <Имя файла> указывается путь к файлу. Путь может быть абсолютным или относительным. При указании относительного пути путь определяется с учетом местоположения текущего рабочего каталога, возвращаемого функцией CurDir(), а также текущего диска (сменить текущий диск позволяет процедура ChDrive()). Чтобы получить путь к папке, в которой находится файл с рабочей книгой, в Excel можно воспользоваться свойством Path объекта ThisWorkbook. Пример создания файла:

Open ThisWorkbook.Path & “test.txt” For Output As #1

Параметр <Режим> может принимать следующие значения:

  • Input — чтение в последовательном режиме. Если файл не существует, то генерируется ошибка;
  • Output — запись в последовательном режиме. Если файл не существует, то он будет создан. Если файл существует, то он будет перезаписан;
  • Append — запись в последовательном режиме. Если файл не существует, то он будет создан. Запись осуществляется в конец файла. Содержимое файла не удаляется;
  • Random — чтение и запись в произвольном режиме. Если файл не существует, то он будет создан. Содержимое файла не удаляется;
  • Binary — чтение и запись в бинарном режиме. Если файл не существует, то он будет создан. Содержимое файла не удаляется.

Параметр <Доступ> задает тип операции с открываемым файлом. Допустимые значения:

  • Read — только чтение;
  • Write — только запись;
  • Read Write — чтение и запись.

Необязательный параметр <Блокировка> может принимать следующие значения:

  •  — другой процесс может читать из файла и писать в файл;
  • Lock Read — другой процесс не сможет читать из файла;
  • Lock Write — другой процесс не сможет писать в файл;
  • Lock Read Write — другой процесс не сможет читать из файла и писать в файл.

Параметр <Дескриптор> позволяет указать уникальный целочисленный номер файла в диапазоне от 1 до 511. Перед номером может быть добавлен символ #. Сгенерировать свободный уникальный номер позволяет функция FreeFile([<Значение>]). Если в параметре <Значение> задано значение 0, или параметр не указан, то генерируется число в диапазоне от 1 до 255, а если значение 1 — то генерируется число в диапазоне от 256 до 511. Пример использования функции FreeFile():

Dim fd As Integerfd = FreeFile()Open ThisWorkbook.Path & “test.txt” For Output As #fd

В необязательном параметре <Длина> указывается целое число до 32 767. При использовании произвольного режима значение задает длину записи, а при использовании последовательного режима — размер буфера. Значение игнорируется в бинарном режиме.

Для закрытия файла используется инструкция Close. Формат инструкции:

Close [ [#]<Дескриптор1>[, …, [#]<ДескрипторN>] ]

Инструкция закрывает файлы, дескрипторы которых перечислены через запятую. Если дескрипторы не указаны, то закрываются все открытые файлы. При завершении программы все открытые файлы автоматически закрываются.

Файлы могут быть открыты в трех режимах: последовательном, произвольном и бинарном. Рассмотрим эти режимы подробно.

I. Чтение и запись текстовых файлов

* Задание

: Разработайте приложение, которое сохраняет в файл информацию из списка (

ListBox

) и загружает из файла информацию обратно в список.

Работа с текстовыми файлами в VB

Форма «Работа с файлами»

OpenMode — указывает, как открыть файл при вызове функций для работы с файлами. Следующие режимы:

  • OpenMode.Append — Файл открыт для добавления данных в его конец. Значение по умолчанию.
  • OpenMode.Binary — Файл открыт для двоичного доступа.
  • OpenMode.Input — Файл открыт для чтения.
  • OpenMode.Output — Файл открыт для записи.
  • OpenMode.Random — Файл открыт для произвольного доступа.

Выполнение:

  1. Поместите на форму элементы список ListBox (lst), текстовое поле TextBox (txt), кнопки: btnAdd («Добавить элемент в список»), btnSave («Сохранить в файле»), btnOpen («Загрузить из файла»). Расположите правильно элементы (рисунок).
  2. При нажатии на btnAdd («Добавить элемент в список») в список lst должна добавиться строка, записанная в текстовое окно txt, а само окно при этом должно очиститься. Добавьте код для события click кнопки btnAdd:
1234 Private Sub btnAdd_Click(…) Handles btnAdd.Clicklst.Items.Add(txt.Text) ‘ добавляем текстtxt.Clear() ‘чистим текстовое полеEnd Sub

Private Sub btnAdd_Click(…) Handles btnAdd.Clicklst.Items.Add(txt.Text) ‘ добавляем текстtxt.Clear() ‘чистим текстовое полеEnd Sub

  1. По щелчку на кнопке btnSave вся информация со списка должна добавляться во введенный пользователем текстовый файл. Для этого добавьте процедуру для события Click кнопки:
1234567891011 Private Sub btnSave_Click(…) Handles btnSave.ClickDim filename As StringDim i As Integer filename = InputBox(“Введите имя файла”, “Сохранить файл”) ‘окно для вводаFileOpen(1, filename, OpenMode.Output) ‘ открываем файл для записиFor i = 0 To lst.Items.Count – 1 PrintLine(1, lst.Items(i)) ‘записываем в файл i-ю строку спискаNextFileClose(1)End Sub

Private Sub btnSave_Click(…) Handles btnSave.ClickDim filename As StringDim i As Integerfilename = InputBox(“Введите имя файла”, “Сохранить файл”) ‘окно для вводаFileOpen(1, filename, OpenMode.Output) ‘ открываем файл для записиFor i = 0 To lst.Items.Count – 1 PrintLine(1, lst.Items(i)) ‘записываем в файл i-ю строку спискаNextFileClose(1)End Sub

  1. Событие Click кнопки btnOpen («Загрузить из файла») запрограммируйте таким образом, чтобы в список помещались все строки из файла:
123456789101112 Private Sub btnOpen_Click(…) Handles btnOpen.ClickDim filename, CurStr As String filename = InputBox(“Введите имя файла”, “Загрузить файл”) ‘окно для вводаFileOpen(1, filename, OpenMode.Input) ‘открываем файл для чтенияlst.Items.Clear()While Not EOF(1) CurStr = LineInput(1) ‘считываем очередную строку If CurStr <> “” Then lst.Items.Add(CurStr) ‘вносим строку в списокEnd WhileFileClose(1)End Sub

Private Sub btnOpen_Click(…) Handles btnOpen.ClickDim filename, CurStr As Stringfilename = InputBox(“Введите имя файла”, “Загрузить файл”) ‘окно для вводаFileOpen(1, filename, OpenMode.Input) ‘открываем файл для чтенияlst.Items.Clear()While Not EOF(1) CurStr = LineInput(1) ‘считываем очередную строку If CurStr <> “” Then lst.Items.Add(CurStr) ‘вносим строку в списокEnd WhileFileClose(1)End Sub

  1. Запустите приложение, внесите в список lst несколько строк и попытайтесь сохранить их в виде файла (желательно с расширением .txt: например, proba.txt). Если не написан путь к файлу, то файл сохранится в папке /bin/Debug Вашего проекта.

Работа с файлами, дисками и папками, путь

Логика изложения основана на том, что можно сделать с существующими объектами, а уже потом — как создать новый. Поскольку многие команды распространяются не только на работу с каталогами, но и на файлы, полное изложение приводится именно здесь.

Все, перечисленное здесь, не имеет прямого отношения к низкоуровневым функциям, но без этой информации работать нельзя в принципе.

Первым является вопрос о том, где мы сейчас находимся. Совсем неочевиден не только ответ, но и то, что сам вопрос будет своевременно задан. Данный тезис становится все более актуальным с каждым годом и мне не хотелось бы, чтобы мои ученики бились об него лбом.

CurDir

Определение текущей папки.

Синтаксис

CurDir [(диск)]

Из синтаксиса можно понять (или нет) достаточно многое.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Перечисленное не дает однозначного ответа на возникающие вопросы, но является основой для таковых. Частичные решения есть в разделе Примеры.

ChDrive

Инструкция для смены текущего диска (ChDrive) работает довольно примитивно. Так, вариант

ChDrive “D”

определит текущим диском диск «D:». Из примера видно, что приводится только литерал, без двоеточия.

ChDir

Изменяет текущий каталог или текущую папку

Синтаксис

Chdir <путь>

Внимание! Изменяется текущая папка на указываемом диске, а не сам диск. Для смены диска потребуется команда ChDrive.

В значении пути можно использовать обозначения относительного перемещения. Например,

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Dir

Функция возвращает строку (String) с именем обнаруженных на диске файла, папки или подпапки. Если объект файловой системы обнаружен не будет, возвратится пустая строка.

Синтаксис

Dir [(<путь>, [<атрибуты>])]

В имени можно использовать знаки подстановки маски файла (* и ?).

Передача в качестве аргумента пустой строки возвращает список всех файлов и папок.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Атрибуты (копия из справки)

Константа Значение Описание
vbNormal 0 Файлы без атрибутов (Значение по умолчанию.)
vbReadOnly 1 В дополнение к файлам без атрибутов определяет файлы, доступные только для чтения
vbHidden 2 В дополнение к файлам без атрибутов определяет скрытые файлы
vbSystem 4 В дополнение к файлам без атрибутов определяет системные файлы
vbVolume 8 Определяет метку тома, то есть имя логического диска (не букву!). Если указан какой-либо другой атрибут, параметр vbVolume игнорируется
vbDirectory 16 В дополнение к файлам без атрибутов определяет каталоги (папки)

Из контекста описания понятно, что атрибуты могут суммироваться.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Name

Оператор Name переименовывает файл или папку и/или перемещает их в новое место.

Синтаксис

Name <oldpathname> As <newpathname>

При этом

  • Обрабатываются только уже существующие объекты.
  • Файл может быть перемещен на другой диск.
  • Файлы, открытые низкоуровневыми процедурами, надо предварительно закрыть.
  • Перемещение папок и подпапок возможно только в пределах логического диска.

MkDir

Создает новый каталог или папку.

Синтаксис

Mkdir <путь>

Если диск не указан, новые каталог или папка создаются на текущем диске. Имя присваивается с учетом регистра символов.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

RmDir

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

Синтаксис

RmDir <путь>

Невозможно удалить папку, содержащую файлы, так что следует вначале удалить их, используя команду Kill. Также этой командой нельзя удалить файл.

Kill

Удаляет файлы с диска.

Синтаксис

Kill <путь>

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

В имени можно использовать знаки подстановки маски файла (* и ?).

Так как команда удаляет только файлы, для удаления папок следует воспользоваться командой RmDir.

SetAttr

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

Синтаксис

SetAttr <имя файла>, <атрибуты>

Оба параметра являются обязательными. Имя файла может содержать путь.

Нельзя изменять атрибуты у открытых файлов!

Атрибуты:

Константа Значение Описание
vbNormal 0 Без атрибутов (по умолчанию)
vbReadOnly 1 Только для чтения (Read-only)
vbHidden 2 Скрытый файл (Hidden)
vbSystem 4 Системный файл (System)
vbArchive 32 Файл изменен после последнего резервного копирования

Атрибуты при указании могут суммироваться.

Доступ к этим материалам предоставляется только зарегистри­рован­ным пользователям!

Работа с текстовыми файлами в Visual Basic.

Совсем
недавно в непомню какой коференции я видел запись какого-то человека, который
просил, чтобы хоть кто-нибудь объяснил ему элементарную работу с файлами…
Казалось бы такое простое… Но это простое для тех, кто уже хоть немного
продвинулся в программировании, а кто это только начал? Это же, действительно,
непроходимый лес! И я сильно сомневаюсь, чтобы кто-нибудь из других наших
Web-мастеров когда-нибудь уделит этому хоть какое-то внимание. Поэтому этим
займусь я и попробую в этой статье показать только основы.

Функция EOF

Функция EOF возвращает логическое значение True, когда достигнут конец файла, открытого для последовательного (Input) или произвольного (Random) доступа.

Синтаксис функции EOF:

Номер_файла – это номер, присвоенный файлу при открытии с помощью оператора Open.

Функция EOF используется для предупреждения ошибок, вызываемых попытками выполнить чтение после конца файла. Она возвращает значение False, пока не будет достигнут конец файла.

Отказоустойчивость

При следующих условиях возможно возникновение исключения:

  • Путь является недопустимым, так как он представляет собой строку нулевой длины (пустую строку), либо содержит только пробелы, либо содержит недопустимые знаки, либо представляет собой путь к устройству (начинается с символов \.) (ArgumentException).

  • Путь не является допустимым, поскольку он равен Nothing (ArgumentNullException).

  • File указывает на путь, который не существует (FileNotFoundException или DirectoryNotFoundException).

  • Файл уже используется другим процессом или возникла ошибка ввода-вывода (IOException).

  • Длина пути превышает максимальную длину, определенную в системе (PathTooLongException).

  • Имя файла или каталога в пути содержит двоеточие (:) или имеет недопустимый формат (NotSupportedException).

  • У пользователя отсутствуют необходимые разрешения на просмотр пути (SecurityException).

  • Диск заполнен, и вызов WriteAllText завершается сбоем (IOException).

Если код выполняется в контексте частичного доверия, исключение может возникнуть из-за недостатка прав доступа. Дополнительные сведения см. в разделе Code Access Security Basics.

См. также раздел

  • FileSystem
  • WriteAllText
  • Практическое руководство. Чтение из текстовых файлов

Чтение и запись файлов в кодировке UTF-16

Все строки, которые мы записывали ранее, сохранялись в файле в кодировке, принятой в системе по умолчанию. В моем случае в кодировке Windows-1251. Если необходимо записать данные в кодировке UTF-16 или прочитать данные, то можно воспользоваться функцией StrConv() (см. разд. 6.8) для преобразования кодировки. В качестве примера запишем данные в фай, а затем прочитаем и выведем их (листинг 12.3).

Dim s As Strings = “строка”s = Chr(255) & Chr(254) & StrConv(s, vbUnicode, 1049)Open ThisWorkbook.Path & “enc.txt” For Binary As #1Put #1, , sClose #1Open ThisWorkbook.Path & “enc.txt” For Binary As #1s = Space(LOF(1) – 2)Seek #1, 3Get #1, , sClose #1s = StrConv(s, vbFromUnicode, 1049)Debug.Print s ‘ строка

Обратите внимание на инструкцию

s = Chr(255) & Chr(254) & StrConv(s, vbUnicode, 1049)

Комбинация символов с кодами 255 и 254 является меткой порядка байтов (сокращенно BOM (Byte Order Mark)). Эта метка является обязательной для кодировки UTF-16. При чтении данных мы пропускаем их и начинаем чтение с позиции 3.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Загрузка ...