Excel VBA FreeFile

Колко често като потребител на Excel отваряте файл и работите върху същия? Много често, нали? Възможно е отново да се автоматизират задачите за отваряне на файла в Excel с помощта на мощен инструмент VBA, който ви позволява да пишете макроси и в крайна сметка автоматизира всички задачи, като започнете от отваряне на файл от дадено място, за да го използвате, запишете и затворите на същото път. Докато говорим за автоматизиране на процеса на отваряне и затваряне на файлове чрез VBA, става много важно да индексирате файла, така че системата да може да идентифицира кой файл да използва по време на изпълнението. Имаме налична функция във VBA с име FreeFile, която служи за тази цел.

Какво е VBA FreeFile функция?

VBA FreeFile е функция, която е категоризирана по функция VBA, която позволява на системата да резервира номер за следващия файл, който да бъде отворен под VBA File Input Output за плавно преживяване на кодирането и намаляване на ненужните грешки във вашия код. Когато отворите файл чрез VBA File IO (Input / Output), става абсолютно задължително да присвоите уникален номер на този файл, тъй като може да имате множество файлове в местоположението, което ще използвате за четене, писане и отваряне чрез вашата код. Как системата знае кой файл от всички онези, които искате да отворите? Функцията 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 Editor (VBE), като щракнете върху бутона Visual Basic под раздела Developer, присъстващ във вашия Excel файл, или натиснете едновременно Alt + F11 бутона.

Стъпка 2: Поставете нов модул в VBE. Кликнете върху бутона Вмъкване . Изберете Модул от списъка с опции, налични в Insert.

Стъпка 3: Определете нова под-процедура, която може да съдържа вашия макрос.

Код:

 Под Пример_1 () Край Sub 

Стъпка 4: Определете две нови променливи, file_1 и file_2 като цяло число. Тези две променливи ще съдържат числата, които присвояваме на всеки файл, който отваряме в макроса.

Код:

 Под пример_1 () Dim файл_1 като Integer Dim file_2 като Integer End Sub 

Стъпка 5: Използвайте оператора за присвояване, за да зададете целочислена стойност 1 на променлива file_1 с помощта на VBA FreeFile.

Код:

 Sub Example_1 () Dim file_1 като Integer Dim file_2 Като Integer file_1 = FreeFile End Sub 

Стъпка 6: Сега използвайте оператора Open, който може да се използва за отваряне на файл във VBA.

Код:

 Под пример_1 () Dim file_1 като Integer Dim file_2 Като Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" За изход като файл_1 End Sub 

Тук сме посочили пътя, по който се намира файлът. Операторът For ви дава опции като това как искате да отворите файла (напр. Като изход), а операторът As посочва номера на файла, който сме посочили с помощта на оператора FreeFile.

Стъпка 7: Следвайте стъпка 5 и стъпка 6, за да присвоите нов номер на втория файл чрез променлива file_2 и го отворете.

Код:

 Под пример_1 () Dim file_1 като Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" For Output As file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" За изход Като файл_2 Край Sub 

Стъпка 8: Сега бихме искали да видим числата, които всъщност са присвоени и на двата текстови файла. Можете да стартирате всеки ред един по един с помощта на клавиша F8. Изходът обаче няма да бъде видим за вас. Нито във файла на Excel, нито в прозореца незабавно. Моля, добавете следното MsgBox изявление, което изскача поле за съобщения с числата за всеки файл.

Код:

 Под пример_1 () Dim file_1 като Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" For Output As file_1 file_2 = FreeFile Open "D: \ Excel Content Writing \ TextFile_2.txt" За изход Като file_2 MsgBox „Стойността за file_1 е:„ & file_1 & Chr (13) и „Стойността за file_2 е:„ & file_2 End Sub 

В този ред код първият ред на полето за съобщение ще съдържа текста „стойността за file_1 е:“ и числовата стойност, присвоена с помощта на функцията FreeFile. Chr (13) позволява появата на следващия ред. Следващият ред в полето за съобщение ще гласи „Стойността за file_2 е:“ и номерът, присвоен на втория файл.

Стъпка 9: Изпълнете този код, като натиснете бутона Run или натиснете клавиша F5.

Ето как функцията FreeFile ви позволява да присвоите номера на файла, който ще отворите, четете, затваряте чрез VBA.

VBA FreeFile - пример №2

Ако затворим файла, който отваряме всеки път, тогава новият файл, който отваряме, винаги ще има сериен номер като 1 всеки път, когато се отвори. Следвайте стъпките по-долу, за да го видите.

Стъпка 1: Определете нова под-процедура, която може да съдържа вашия макрос.

Код:

 Под Пример_2 () Край Sub 

Стъпка 2: Определете две променливи file_1 и file_2 като цяло число в новоопределената под-процедура.

Код:

 Sub Example_2 () Dim file_1 Като Integer Dim file_2 Като Integer End Sub 

Стъпка 3: Сега използвайте FreeFile, за да присвоите номер на дадения файл, и Open оператор, за да отворите този файл през местоположението, на което го имаме.

Код:

 Sub Example_2 () Dim file_1 като Integer Dim file_2 Като Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" За изход като файл_1 End Sub 

Стъпка 4: Използвайте MsgBox оператор, за да добавите поле за съобщение за номера на първите файлове.

Код:

 Под пример_2 () Dim file_1 като Integer Dim file_2 As Integer file_1 = FreeFile Open „D: \ Excel Content Writing \ TextFile_1.txt„ For Output As file_1 MsgBox „Стойността за file_1 е:„ & file_1 End Sub 

Стъпка 5: Използвайте оператор за затваряне, за да затворите първия файл, който сте отворили чрез VBA.

Код:

 Под пример_2 () Dim file_1 като Integer Dim file_2 As Integer file_1 = FreeFile Open „D: \ Excel Content Writing \ TextFile_1.txt„ For Output As file_1 MsgBox „Стойността за file_1 е:„ & file_1 Затваряне на файла_1 End sub 

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

Код:

 Под пример_2 () Dim file_1 като Integer Dim file_2 As Integer file_1 = FreeFile Open "D: \ Excel Content Writing \ TextFile_1.txt" For Output As file_1 MsgBox "Стойността за file_1 е:" & file_1 Затвори файла_1 file_2 = FreeFile Open "D : \ Excel Content Writing \ TextFile_2.txt "За изход като файл_2 MsgBox" Стойността за file_2 е: "& file_2 Затваряне на файла_2 Край Sub 

Стъпка 7: Изпълнете този код, като натиснете бутона Run или F5.

Първото поле за съобщение представлява стойността на file_1, която изглежда 1. Второто поле за съобщение представлява стойността на file_2, което също изглежда 1. Тази промяна е налице, защото използвахме оператора за затваряне на файлове един по един. Поради което, докато инициирате нов файл, всеки път, когато старият файл и неговият номер изчезнат от системната памет и следващият файл ще се счита за нов файл с числа, започващи от 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 Environment

Категория: