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

Функция Excel VBA DIR

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

Функция DIR возвращает самое первое имя файла в указанном пути к папке. Например, на вашем D-диске, если у вас есть папка с именем 2019 и в этой папке, если вы используете файл Excel с именем «2019 Sales», вы можете получить доступ к этому файлу с помощью функции DIR.

Функция «VBA DIR» очень полезна для получения имени файла, используя его папку пути.

Синтаксис

Эта функция имеет два необязательных аргумента.

  • [Имя пути]: в качестве имени указывается путь для доступа к файлу. Это может быть имя файла, имя папки или каталога. Если какой-либо путь не назначен, я верну пустое строковое значение, например «»
  • [Атрибуты]: это также необязательный аргумент, и вы не можете использовать его очень часто при кодировании. Вы можете указать атрибут файла в [Path Name], и функция DIR будет искать только эти файлы.

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

Примеры использования функции VBA DIR

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

Пример # 1 - Доступ к имени файла с помощью функции DIR

Я объясню вам простой пример доступа к имени файла с помощью функции DIR. Следуйте приведенным ниже инструкциям.

Шаг 1: Создайте имя макроса.

Шаг 2: Определите переменную как String .

Код:

 Sub Dir_Example1 () Dim MyFile As String End Sub 

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

Код:

 Sub Dir_Example1 () Dim MyFile As String MyFile = Dir (End Sub 

Шаг 4: Теперь скопируйте и вставьте путь к папке с файлами на вашем компьютере. Укажите путь в двойных кавычках.

Код:

 Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template End Sub 

Шаг 5: Я указал свой путь к папке, теперь нам нужно также указать имя файла и его расширение. Для этого в первую очередь нам нужно поставить обратную косую черту после пути (\)

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

Код:

 Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template \ VBA Dir Excel Template.xlsm") End Sub 

Шаг 6: Покажите значение переменной в окне сообщения.

Код:

 Sub Dir_Example1 () Dim MyFile As String MyFile = Dir ("E: \ VBA Template \ VBA Dir Excel Template.xlsm") MsgBox MyFile End Sub 

Теперь запустите код и посмотрите, каков результат в окне сообщения.

Таким образом, функция DIR вернула имя файла с расширением файла.

Пример # 2 - Открыть файл с помощью функции DIR

Как теперь открыть файл? Эта функция может возвращать имя файла, но открытие этого файла - это немного другой процесс. Следуйте инструкциям ниже, чтобы открыть файл.

Шаг 1: Создайте две переменные как String .

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String End Sub 

Шаг 2: Теперь для переменной FolderName назначьте путь к папке.

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" End Sub 

Шаг 3: Теперь для переменной FileName нам нужно получить имя файла с помощью функции DIR .

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (End Sub 

Шаг 4: Теперь для имени пути мы уже назначили путь к переменной FolderPath, поэтому мы можем напрямую указать эту переменную здесь.

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName End Sub 

Шаг 5: Теперь нам нужно указать имя файла. С помощью символа амперсанда (&) назначьте имя файла.

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") End Sub 

Шаг 6: Теперь используйте метод WORKBOOKS.OPEN .

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") Workbooks.Open End Sub 

Шаг 7: Имя файла представляет собой комбинацию FolderPath и FileName . Так что объедините эти два.

Код:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") Workbooks.Open FolderName & FileName End Sub 

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

Пример # 3 - Открытие нескольких книг с помощью функции DIR

Actually, we can access all the workbooks in the folder. In order to access each and every file we cannot mention all the file names directly, but we can use the wildcard character to refer the file.

The asterisk (*) is one of those wildcard characters. It identifies any number of characters. For example, if you want to access all the macro files in the folder you can use the asterisk as the wildcard i.e. “*.xlsm*”

Here * will match any file name with the extension of the file is equal to “xlsm”.

Code:

 Sub Dir_Example3() Dim FolderName As String Dim FileName As String FolderName = "E:\VBA Template\" FileName = Dir(FolderName & "*.xlsm*") Do While FileName  "" Workbooks.Open FolderName & FileName FileName = Dir() Loop End Sub 

Now the above code will open all the files in the folder path.

FileName = Dir() the reason why I have used this line because, in order to access the next file in the folder, we have to make the existing file name to nil. The moment we make the existing file name to nil when the loop runs for the second time it will take the next file in the folder.

Example #4 – Get all the File Names in the Folder

Suppose if you want the list of all the file names in the folder we can also do this by using attributes.

Code:

 Sub Dir_Example4() Dim FileName As String FileName = Dir("E:\VBA Template\", vbDirectory) Do While FileName  "" Debug.Print FileName FileName = Dir() Loop End Sub 

Make the immediate window visible by pressing Ctrl + G.

Now run the code we will get all the file names in the immediate window.