FileDialog – Wybór folderu z okna dialogowego

Po co komu funkcja FileDialog?

Dlaczego zwróciłem uwagę na FileDialog? Pisząc makra często bywa tak, że nie wiem jaka będzie ścieżka dostępu do folderu, w którym znajdywać się będą przetwarzane pliki. To powodowało, że użytkownik musiał wpisać pełną ścieżkę do okienka InputBox, albo umieszczać plik z makrem w tym folderze. Odkryłem jednak metodę, która pozwala w przyjazny dla użytkownika sposób wskazać folder w oknie eksploratora. Działa podobnie jak GetOpenFileName w przypadku wyboru pliku.

Aby wyświetlić użytkownikowi okno wyboru folderu użyję własności Excela jaką jest FileDialog. FileDialog ma kilka zastosowań, ale skupię się na tym co chcę osiągnąć.

deklaracja zmiennych FileDialog i String

Na początek deklaruję dwie zmienne, z których jedna będzie zmienną obiektową typu FileDialog, a druga zmienną tekstową. Ta druga zmienna przechowa ścieżkę do folderu.

Teraz muszę wybrać konkretny rodzaj okna FileDialog czyli msoFileDialogFolderPicker.

wybór typu zmiennej FileDialog

Kolejnym krokiem jest wprowadzenie dodatkowych parametrów mojego obiektu FileDialog. Wykorzystując instrukcję With dodałem własną nazwę przycisku i ścieżkę startową. Z tego poziomu użytkownik zacznie szukać swojego folderu, a także tytuł okna. Polecenie Show służy już tylko do wyświetlenia okna dialogowego.

nadanie wartości i wyświetlenie okna FileDialog

Jeśli użytkownik wybrał już folder mogę jego ścieżkę wzbogacić o dodatkowy backslash i przypisać do zmiennej.

odwołanie do wybranej pozycji w oknie FIleDialog

Przenoszenie plików za pomocą pętli Do Loop i funkcji Name

Skoro mam już źródło danych to mógłbym wykorzystać je np. do tego, aby przenieść wszystkie pliki z wybranego folderu do stałej lokalizacji.

Jedną z metod jest wykorzystanie pętli Do Loop, oraz funkcji Dir, która w pętli będzie zwracać kolejne nazwy plików znajdujących się w folderze. Funkcja ta, kiedy wskazać jej ścieżkę jako parametr zwraca nazwę pierwszego w kolejności alfabetycznej pliku z folderu. Kiedy jednak ponownie użyję Dir bez wskazania ścieżki, otrzymam nazwę kolejnego pliku.

Wprowadzam dodatkową zmienną, która będzie przechowywać nazwy znalezionych plików.

deklaracja zmiennej i pobranie nazwy pliku ze wskazanego folderu

Pętlę Do Loop ograniczam na początku sprawdzeniem, czy zawartość zmiennej nie jest pustym ciągiem znaków. To oznaczałoby, że nie ma już więcej plików do przenoszenia. W samej pętli najpierw przenoszę plik do wprowadzonej na sztywno ścieżki za pomocą polecenia Name. Kolejnym krokiem jest pobranie nazwy kolejnego pliku.

pętla do loop przenosząca pliki z folderu

Jest też inna metoda na dostanie się do plików w folderze jako do kolekcji, ale o tym w innym wpisie.

widok okna dialogowego FileDialog

Wersja wideo dostępna na YouTube:

Spodobał Ci się artykuł ? Udostępnij go znajomym.

Share on facebook
Share on linkedin
Share on twitter

Leave a Comment

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *