Mar 02 2010

Wtorki z VBA cz. 19 – Otwieranie plików za pomocą okna dialogowego

Posted by Marcin

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 True możemy wybrać wiele plików. Domyślnie ustawiony na False.

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
 

Powiązane artykuły:

Filed under : VBA, Wszystkie | No Comments »

Leave a Reply