Application.FileDialog to właściwość obiektu Application odpowiadająca za otwarcie okna dialogowego i wskazanie pliku/folderu.
kliknij, aby powiększyć
Właściwość ta stosowana jest najczęściej przy konieczności wybrania pliku lub folderu i wykorzystania go w dalszej części kodu procedury.
W kodzie VBA wygląda to tak:
kliknij, aby powiększyć
Jest jeden argument wejściowy: fileDialogType.
Może on przyjmować następujące wartości:
msoFileDialogFilePicker do wskazania pliku
msoFileDialogFolderPicker do wskazania folderu
msoFileDialogOpen do otwarcia wskazanego pliku
msoFileDialogSaveAs do zapisania wskazanego pliku
W praktyce chyba nigdy nie zdarzyło mi się zastosować w projektach te dwie ostatnie wartości argumentu. Za to pierwszą i drugą – bardzo często. Zarówno w Excelu jak i Accessie.
Obiekt Application w VBA w Accessie odnosi się do aktywnej instancji aplikacji Microsoft Access. Umożliwia dostęp do różnych ustawień i funkcjonalności całej aplikacji. Można go używać do manipulowania oknami, bazami danych, a także do uruchamiania akcji, które normalnie wykonuje się za pomocą makr.
kliknij, aby powiększyć
Ma swoje właściwości i metody, z których wiele wymaga osobnego omówienia. Najczęściej stosowane to:
W edytorze VBA każdy moduły własne obiektów ma charakter prywatny. Oznacza to, że wszystkie zapisane w nim funkcje i procedury są dostępne tylko z poziomu VBA.
Moduły ogólne są domyślnie publicznie. Zdefiniowane w nich procedury i funkcje publiczne są widoczne również z poziomu Accessa (m.in. w kreatorze wyrażeń). Funkcje i procedury prywatne mogą być wykorzystane jedynie z poziomu procedur zapisanych w tym samym module.
Np. taka funkcje w module ogólnym:
Public Function PierwszyNumer() 'funkcja publiczna
Pierwszy = DFirst(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”) End Function
Private Function OstatniNumer() 'funkcja prywatna OstatniNumer = DLast(„NumerKatalogowy”, „TabelaKsiazki”, „DataP is null”)
End Function
W kreatorze wyrażeń wygląda to tak:
kliknij, aby powiększyć
W bazie Biblioteka, w module ModuleFunction widoczna jest tylko jedna funkcja – zdeklarowana jako Public. Prywatna funkcja OstatniNumer nie jest tu widoczna, może być wykorzystana tylko w obrębie tego samego modułu.
Przy bardziej rozbudowanych projektach i wielu procedurach w kodzie może być więcej modułów ogólnych z różnymi procedurami i funkcjami. Nie wszystkie z nich muszą być widoczne i dostępne również bezpośrednio w Accessie, czasem warto je „utajnić”. Wystarczy na początku modułu ogólnego wstawić Option Private Module
kliknij, aby powiekszyć
Od tej pory – wszystkie funkcje i procedury publiczne w takim module będą dostępne z innych modułów, ale nie w Accessie.
W praktyce zawsze tak robię, porządkując funkcje i procedury i część z nich umieszczając je modułach prywatnych, a część – publicznych. Zmieniam też nazwy modułów, żeby się nie pogubić i utrzymać porządek w kodzie.
Np. tak:
Przy deaktywowaniu to jedno ze zdarzeń uruchamiających się automatycznie przy deaktywowaniu formularza, czyli dokładnie odwrotnie niż przy aktywowaniu formularza. Dostępne jest w arkuszu właściwości formularza oraz w module VBA formularza.
kliknij, aby powiększyć
W edytorze VBA jest to procedura o nazwie Form_Deactivate. Znajduje się ona w module własnym formularza. Procedura ta działa w momencie, gdy formularz jest deaktywowany, także, gdy przy otwartych kilku formularzach, przechodzimy do innego.
Działa także tuż przed zamknięciem formularza.
Przy aktywowaniu to jedno ze zdarzeń uruchamiających się automatycznie przy aktywowaniu formularza. Dostępne jest w arkuszu właściwości formularza oraz w module VBA formularza.
kliknij, aby powiększyć
W edytorze VBA jest to procedura o nazwie Form_Activate. Znajduje się ona w module własnym formularza. Procedura ta działa w momencie, gdy formularz jest aktywowany, także, gdy przy otwartych kilku formularzach, przechodzimy do tego, w którym jest zdefiniowana.
Działa także po otwarciu, już po otwarciu i załadowaniu formularza.