Funkcja VBA DIR

Funkcja Excel VBA DIR

Funkcja VBA DIR jest również znana jako funkcja katalogu, jest to funkcja wbudowana w VBA, która służy do podania nazwy pliku danego pliku lub folderu, ale musimy podać ścieżkę do pliku, dane wyjściowe zwrócone przez to funkcja jest ciągiem, ponieważ zwraca nazwę pliku, istnieją dwa argumenty tej funkcji, którymi są nazwa ścieżki i atrybuty.

Funkcja DIR zwraca pierwszą nazwę pliku w określonej ścieżce folderu. Na przykład na dysku D, jeśli masz folder o nazwie 2019 iw tym folderze, jeśli wybierzesz plik programu Excel o nazwie „Sprzedaż 2019”, możesz uzyskać dostęp do tego pliku za pomocą funkcji DIR.

Funkcja „VBA DIR” jest bardzo pomocna w uzyskaniu nazwy pliku przy użyciu folderu ścieżki.

Składnia

Ta funkcja ma dwa opcjonalne argumenty.

  • [Nazwa ścieżki]: Jako nazwa podaj ścieżkę dostępu do pliku. Może to być również nazwa pliku, nazwa folderu lub katalogu. Jeśli jakakolwiek ścieżka nie jest przypisana, zwrócę pustą wartość ciągu, tj. „”
  • [Atrybuty]: Jest to również opcjonalny argument i możesz nie używać go zbyt często w kodowaniu. Możesz określić atrybut pliku w [Nazwa ścieżki], a funkcja DIR wyszukuje tylko te pliki.

Na przykład: Jeśli chcesz uzyskać dostęp tylko do ukrytych plików, jeśli chcesz uzyskać dostęp tylko do plików tylko do odczytu itp.… Możemy określić w tym argumencie. Poniżej znajdują się atrybuty, których możemy użyć.

Przykłady użycia funkcji VBA DIR

Możesz pobrać ten szablon VBA Dir Excel tutaj - Szablon VBA Dir Excel

Przykład # 1 - Dostęp do nazwy pliku za pomocą funkcji DIR

Wyjaśnię ci prosty przykład dostępu do nazwy pliku za pomocą funkcji DIR. Wykonaj poniższe kroki.

Krok 1: Utwórz nazwę makra.

Krok 2: Zdefiniuj zmienną jako ciąg .

Kod:

 Sub Dir_Example1 () Dim MyFile As String End Sub 

Krok 3: Teraz dla tej zmiennej przypiszemy wartość za pomocą funkcji DIR .

Kod:

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

Krok 4: Teraz skopiuj i wklej ścieżkę folderu plików na swoim komputerze. Podaj nazwę ścieżki w cudzysłowach.

Kod:

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

Krok 5: Wspomniałem o mojej ścieżce do folderu, teraz musimy również podać nazwę pliku i jego rozszerzenie. Aby to zrobić, najpierw musimy umieścić ukośnik odwrotny po ścieżce (\)

Po wpisaniu odwrotnego ukośnika wpisujemy pełną nazwę pliku .

Kod:

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

Krok 6: Pokaż wartość zmiennej w oknie komunikatu.

Kod:

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

Teraz uruchom kod i zobacz, jaki jest wynik okna komunikatu.

Zatem funkcja DIR zwróciła nazwę pliku z rozszerzeniem.

Przykład # 2 - Otwórz plik za pomocą funkcji DIR

Jak teraz otworzymy plik? Ta funkcja może zwrócić nazwę pliku, ale otwarcie tego pliku to trochę inny proces. Wykonaj poniższe czynności, aby otworzyć plik.

Krok 1: Utwórz dwie zmienne jako ciąg .

Kod:

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

Krok 2: Teraz dla zmiennej FolderName przypisz ścieżkę folderu.

Kod:

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

Krok 3: Teraz dla zmiennej FileName musimy pobrać nazwę pliku za pomocą funkcji DIR .

Kod:

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

Krok 4: Teraz dla nazwy ścieżki przypisaliśmy już ścieżkę do zmiennej FolderPath, więc możemy bezpośrednio podać zmienną tutaj.

Kod:

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

Krok 5: Teraz musimy podać nazwę pliku. Używając symbolu ampersand (&) przypisz nazwę pliku.

Kod:

 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 

Krok 6: Teraz użyj metody WORKBOOKS.OPEN .

Kod:

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

Krok 7: Nazwa pliku to połączenie ścieżki folderu i nazwy pliku . Więc połącz te dwa.

Kod:

 Sub Dir_Example2 () Dim FolderName As String Dim FileName As String FolderName = "E: \ VBA Template \" FileName = Dir (FolderName & "VBA Dir Excel Template.xlsm") Skoroszyty. Otwórz nazwę folderu i nazwę pliku End Sub 

Teraz uruchom ten kod, aby otworzyć wspomnianą nazwę pliku.

Przykład # 3 - Otwórz wiele skoroszytów za pomocą funkcji 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.