Excel VBA FreeFile

Как часто, будучи пользователем Excel, вы открываете файл и работаете над ним? Очень часто, верно? Опять же можно автоматизировать задачи открытия файла в Excel, используя мощный инструмент VBA, который позволяет писать макросы и в конечном итоге автоматизировать все задачи, начиная с открытия файла из заданного местоположения, чтобы использовать, сохранять и закрывать его на том же самом месте. путь. Говоря об автоматизации процесса открытия и закрытия файлов через VBA, становится очень важно проиндексировать файл, чтобы система могла определить, какой файл использовать во время выполнения. В VBA есть функция FreeFile, которая служит для этой цели.

Что такое функция VBA FreeFile?

VBA FreeFile - это функция, относящаяся к категории VBA, которая позволяет системе резервировать номер для открытия следующего файла в разделе «Ввод-вывод файла VBA» для упрощения кодирования и уменьшения ненужных ошибок в коде. Когда вы открываете файл через VBA File IO (Ввод / Вывод), становится абсолютно обязательным присваивать этому файлу уникальный номер, потому что у вас может быть несколько файлов в месте, которое вы собираетесь использовать для чтения, записи и открытия цели через ваш код. Как система узнает, какой файл из всех тех, которые вы хотите открыть? Функция VBA FreeFile идентифицирует уникальный номер, который мы присваиваем файлу, и делает его доступным для открытия, чтения или записи в VBA.

Синтаксис для функции FreeFile следующий:

Эта функция принимает только один аргумент RangeNumber, который имеет стандартные значения как ноль (0) и один (1). Если вы укажете ноль, номер файла будет присваиваться в диапазоне от 1 до 255 для каждого файла, который вы открываете. Если вы укажете один, номер файла будет назначаться в диапазоне от 256 до 511 пошагово для каждого файла, который вы открываете. Если RangeNumber не указан, по умолчанию будет учитываться ноль.

Как использовать функцию FreeFile в Excel VBA?

Ниже приведены различные примеры использования функции FreeFile в Excel VBA.

Вы можете скачать этот шаблон VBA FreeFile Excel здесь - Шаблон VBA FreeFile Excel

VBA FreeFile - Пример # 1

Выполните следующие шаги, чтобы использовать функцию FreeFile в Excel VBA.

Шаг 1. Откройте новый редактор Visual Basic (VBE), нажав кнопку Visual Basic на вкладке « Разработчик » в вашем файле Excel или одновременно нажав сочетание клавиш Alt + F11 .

Шаг 2: Вставьте новый модуль в VBE. Нажмите на кнопку Вставить . Выберите Module из списка доступных опций в Insert.

Шаг 3: Определите новую подпроцедуру, которая может содержать ваш макрос.

Код:

 Sub Example_1 () End Sub 

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

Код:

 Sub Example_1 () Dim file_1 As Integer Dim file_2 As Integer End Sub 

Шаг 5: Используйте оператор присваивания, чтобы присвоить целочисленное значение 1 переменной file_1 с помощью VBA FreeFile.

Код:

 Sub Example_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile End Sub 

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

Код:

 Sub Example_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 End Sub 

Здесь мы указали путь, по которому находится файл. Оператор For предоставляет вам варианты, например, как вы хотите открыть файл (например, как вывод), а оператор As указывает номер файла, который мы указали с помощью оператора FreeFile.

Шаг 7: Выполните шаг 5 и шаг 6, чтобы назначить новый номер второму файлу с помощью переменной file_2 и откройте его.

Код:

 Sub Example_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = Открытие FreeFile "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 file_2 = Открытие FreeFile "D: \ Запись содержимого Excel \ TextFile_2.txt" Для вывода Как file_2 End Sub 

Шаг 8: Теперь мы хотели бы видеть числа, которые на самом деле присваиваются обоим текстовым файлам. Вы можете запустить каждую строку одну за другой с помощью клавиши F8. Однако вывод не будет виден вам. Ни в файле Excel, ни в непосредственном окне. Пожалуйста, добавьте следующую инструкцию MsgBox, которая выскакивает окно сообщения с номерами для каждого файла.

Код:

 Sub Example_1 () Dim file_1 As Integer Dim file_2 As Integer file_1 = Открытие FreeFile "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 file_2 = Открытие FreeFile "D: \ Запись содержимого Excel \ TextFile_2.txt" Для вывода Как file_2 MsgBox "Значение для file_1 равно:" & file_1 & Chr (13) & "Значение для file_2 равно:" & file_2 End Sub 

В этой строке кода первая строка окна сообщения будет содержать текст «значение для file_1 is:» и числовое значение, назначенное с помощью функции FreeFile. Chr (13) позволяет отображать следующую строку. В следующей строке окна сообщения будет указано «Значение для file_2 is:» и номер, назначенный второму файлу.

Шаг 9: Запустите этот код, нажав кнопку «Выполнить» или нажав клавишу F5.

Именно так функция FreeFile позволяет вам присвоить номер файлу, который вы собираетесь открывать, читать, закрывать через VBA.

VBA FreeFile - Пример № 2

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

Шаг 1: Определите новую подпроцедуру, которая может содержать ваш макрос.

Код:

 Sub Example_2 () End Sub 

Шаг 2: Определите две переменные file_1 и file_2 как целое число во вновь определенной подпроцедуре .

Код:

 Sub Example_2 () Dim file_1 As Integer Dim file_2 As Integer End Sub 

Шаг 3: Теперь используйте FreeFile, чтобы присвоить номер данному файлу, и инструкцию Open, чтобы открыть этот файл через место, в котором он у нас есть.

Код:

 Sub Example_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 End Sub 

Шаг 4: Используйте оператор MsgBox, чтобы добавить окно сообщения для номера первых файлов.

Код:

 Sub Example_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 MsgBox "Значение для file_1:" & file_1 End Sub 

Шаг 5: Используйте оператор Close, чтобы закрыть первый файл, который вы открыли через VBA.

Код:

 Sub Example_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 MsgBox "Значение для file_1:" & file_1 Close file_1 End Sub 

Шаг 6: Теперь выполните ту же процедуру, что и в Шаге 5, Шаге 6, Шаге 7, но для второго файла. Он включает присвоение значения переменной file_2 с помощью функции FreeFile и ее открытие с помощью оператора Open, с помощью MsgBox для отображения номера файла для второго файла и, наконец, закрытия второго файла.

Код:

 Sub Example_2 () Dim file_1 As Integer Dim file_2 As Integer file_1 = OpenFile Open "D: \ Запись содержимого Excel \ TextFile_1.txt" Для вывода в виде file_1 MsgBox "Значение для file_1:" & file_1 Close file_1 file_2 = FreeFile Open "D : \ Запись содержимого Excel \ TextFile_2.txt "Для вывода в виде файла_2 MsgBox" Значение для файла_2: "& file_2 Закрыть файл_2 End Sub 

Шаг 7: Запустите этот код, нажав кнопку Run или F5.

Первое окно сообщения представляет значение file_1, которое выглядит равным 1. Второе окно сообщения представляет значение file_2, которое также представляется равным 1. Это изменение существует, потому что мы использовали оператор close, чтобы закрыть файлы один за другим. В связи с этим при запуске нового файла каждый раз, когда старый файл и его номер удаляются из системной памяти, а следующий файл будет рассматриваться как новый файл с номерами, начинающимися с 1.

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

  • FreeFile возвращает уникальное целое число для каждого файла, который мы открываем, читаем, закрываем через VBA File IO.
  • FreeFile имеет два значения для аргумента RangeNumber (который является необязательным). Ноль обычно назначает число в диапазоне от 1 до 255, а один назначает числа от 256 до 511.

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

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

  1. Проверка файла VBA существует | Шаблон Excel
  2. Индекс VBA вне диапазона (примеры)
  3. Функция GetObject в Excel VBA
  4. Как использовать числовой формат в VBA?
  5. VBA Environ

Категория: