Jeśli projektujemy "prawdziwą" aplikację pod Excelem, prawdopodobnie nie obejdziemy się bez konieczności wczytywania plików. Plików, które powinny być wskazane przez użytkownika. Z pomocą przyjdzie nam metoda GetOpenFileName - zawiera (prawie) wszyskto, czego potrzebujemy.
Metoda ta otwiera okno dialogowe Otwieranie (takie samo jak po wybraniu pozycji Otwórz z menu Plik), ale - uwaga - nie otwiera pliku, którego nazwę podaną - zwraca tylko łańcuch tekstowy zawierający ścieżkę i nazwę wybranego pliku. Tak naprawdę to świetne rozwiązanie - nie musimy pliku otwierać już w momencie jego wybrania - możemy to zrobić w dowolnym momencie. Składnia metody jest następująca:
Application.GetOpenFileName(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
Wszystkie argumenty są opcjonalne i mają następujące znaczenie:
- FileFilter - łańcuch określający kryterium filtrowania plików. Domyślnie przyjmuje wartość
"Wszystkie pliki (*.*),*.*". Część do przecinka (Wszystkie pliki (*.*)) jest tekstem wyświetlanym na liście rozwijanej Pliki typu, natomiast część po przecinku (*.*) określa, jakie pliki zostaną wyświetlone w oknie. Możemy podać kilka rodzajów, łącząc łańcuchy za pomocą operatora&, np.:MojFiltr="Pliki tekstowe (*.txt),*.txt," & "Pliki Excel (*.xls),*.xls". - FilterIndex - numery indeksów domyślnego kryterium filtrowania plików. Np. dla przykładu z punktu wyżej, FilterIndex=2 oznaczałby, że domyślnie będą wyświetlane pliki typu *.xls.
- Title - tytuł okna dialogowego; domyślnie jest to Otwórz.
- ButtonText - tylko dla Maców.
- MultiSelect - jeśli jest ustawiony na
Truemożemy wybrać wiele plików. Domyślnie ustawiony naFalse.
Makro prezentujące tę metodę podaję poniżej:
Sub PobierzNazwePliku() Dim strPlik As String 'Pobieramy nazwe strPlik = Application.GetOpenFilename("Pliki tekstowe (*.txt),*.txt," & "Pliki Excela (*.xls),*.xls", 2) 'Konczymy prace, jesli ANULUJ If strPlik = False Then MsgBox "Wcisnieto ANULUJ" Exit Sub End If Workbooks.Open strPlik End Sub
