Po przeczytaniu tego wpisu będziesz wiedział jak w łatwy sposób pobrać pełną ścieżkę pliku. Do tego celu można wykorzystać metodę GetOpenFilename obiektu Application lub metodę GetSaveAsFilename obiektu Application.
Metoda GetOpenFilename wyświetla dobrze wszystkim znane okno dialogowe Otwieranie, gdzie wskazujemy folder oraz wybieramy plik, który nas interesuje.
Co ważne metoda ta nie otwiera wskazanego pliku a jedynie pobiera jego ścieżkę oraz nazwę i zwraca jako łańcuch znaków.
Poniżej przykład implementacji metody GetOpenFilename
Sub PobierzSciezkePliku()
Dim SciezkaPliku As Variant 'Deklaracja zmiennej, która będzie przechowywać ścieżkę pliku
Dim FileFilter As String 'Deklaracja zmiennej, która będzie argumentem FileFilter
FileFilter = "Pliki Excel XLSX (*.xlsx),*.xlsx," 'Tutaj podajemy łańcuch określający kryterium filtrowania plików
SciezkaPliku = Application.GetOpenFilename(FileFilter) 'Otwarcie okna dialogowego Otwieranie oraz pobranie ścieżki pliku do zmiennej
End Sub
Wszystkie argumenty metody GetOpenFilename są opcjonalne.
Application.GetOpenFilename(FileFilter, FileIndex, Title, ButtonText, MultiSelect)
FileFilter – argument ten określa co pojawi się na liście rozwijanej okna dialogowego Otwieranie. Jeżeli pominiemy ten argument to w oknie będą wyświetlane Wszystkie pliki. Jest to równoznaczne z podaniem argumentu „Wszystkie pliki (*.*),*.*
W powyższym przykładzie wyświetlamy tylko pliki formatu .xlsx. Argument FileFilter jest równy: „Pliki Excel XLSX (*.xlsx),*.xlsx,”
Pierwsza część łańcucha: Pliki Excel XLSX definiuje jaki tekst będzie wyświetlany na liście rozwijanej Pliki typu. Druga część: (*.xlsx),*.xlsx, określa jakie pliki zostaną wyświetlone w oknie (tylko o formacie .xlsx).
FilterIndex – argument ten definiuje domyślne kryterium filtrowania plików (Ma to znaczenie w przypadku gdy FileFilter posiada więcej niż jedno kryterium. Poniżej jest zaprezentowany przykład gdy argument FileFilter składa się z 3 kryteriów).
Title – tytuł okna dialogowego (jesli zostanie pominięty, tytułem będzie łańcuch Otwieranie
ButtonText – argument stosowany tylko w przypadku systemu Macintosh
MultiSelect – jeżeli argument ma wartość True, wybranych może być więcej niże jeden plik. Wartością domyślną jest False (możliwość wybierania tylko jednego pliku). Gdy argument będzie równy True to metoda GetOpenFilename będzie zwracać tablicę.
Poniżej przykład gdy mamy 3 kryteria filtrowania plików:
Sub PobierzSciezkePliku()
Dim SciezkaPliku As Variant
Dim FileFilter As String
FileFilter = "Pliki Excel (*.xlsx;*.xls),*xlsx;*.xls,"
"Pliki Excel XLSX (*.xlsx),*.xlsx,"
"Pliki Excel 97-2003 (*.xls),*.xls,"
SciezkaPliku = Application.GetOpenFilename(FileFilter)
End Sub
Następnie spróbujmy zdefiniować 4 kryteria filtrowania plików, ustawić czwarte kryterium jako domyślne i zmienić tytuł okna dialogowego.
Sub PobierzSciezkePliku()
Dim SciezkaPliku As Variant
Dim FileFilter As String
Dim FilterIndex As Integer
Dim Title As String
FileFilter = "Pliki Excel (*.xlsx;*.xls),*xlsx;*.xls," & _
"Pliki Excel XLSX (*.xlsx),*.xlsx," & _
"Pliki Excel 97-2003 (*.xls),*.xls," & _
"Wszystkie pliki (*.*),*.*"
FilterIndex = 4 'Wybieramy domyślny filtr. 4 oznacza że domyślnie wybieramy filtr Wszystkie pliki (*.*)
Title = "Otwórz plik Excela"
SciezkaPliku = Application.GetOpenFilename(FileFilter, FilterIndex, Title)
'Wyświetlenie MessageBox, jeśli w oknie dialogowym zostanie naciśnięty przycisk Anuluj
If SciezkaPliku = False Then
MsgBox "Nie wybrano żadnego plikU."
Exit Sub
End If
End Sub
Metoda GetSaveASFilename jest prawie identyczna jak metoda GetOpenFilename. Różnica jest taka, że wyświetla ona okno dialogowe Zapisywanie jako i umożliwia wybranie pliku lub podanie nazwy pliku. Funkcja również zwraca ścieżkę pliku wraz z nazwą i nie podejmuje żadnej akcji. Wszystkie argumenty tej funkcji są opcjonalne. Argument InitialFilename pozwala określić sugerowaną nazwę pliku (wraz ze ścieżką do pliku).
Tworzymy również raporty w Power BI.
Jeśli jesteś zainteresowany pracą u nas to poszukujemy osoby na stanowisko Power BI – Młodszy programista/developer Business Intelligence