Tym wpisem chciałbym rozpocząć dłużą serię postów omawiających szereg zagadnień związanych z interakcją pomiędzy aplikacjami pakietu MS Office z wykorzystaniem kodu VBA. Postaram się omówić kilka prostych przykładów dot. aplikacji Excel, Word, PowerPoint i Access.
Rzecz od której nie sposób nie rozpocząć to zagadnienia dot. typów łączenia aplikacji, a więc jak wskazać w kodzie aplikacji Excel inną aplikację, np. Word'a w celu umożliwienia wykonania dalszych operacji w edytorze tekstu z poziomu kodu VBA umieszczonego w Excelu. Zagadnienie to określa się pojęciem '
wiązania' dookreślając możliwość zastosowania dwóch typów wiązań: '
wiązania wczesnego' (
early binding) lub '
wiązania późnego' (
late binding). W tym i kolejnym wpisie omówię krótko oba te warianty od strony praktycznej.
Wczesne wiązanie (early binding)...
...wymagać będzie od użytkownika wykonania akcji 'przed kompilacją kodu'. Operacja wiąże się z koniecznością ustawienia referencji w edytorze VBA w pozycji
Menu >> Tools >> References... gdzie następnie należy wskazać i zaznaczyć odpowiednią bibliotekę lub aplikację. Przykładowo obrazuje to poniższy zrzut ekranu gdzie z poziomu aplikacji Excel wskazano referencję do aplikacji Word
Niezbędny kod VBA tworzący wiązanie wyglądać będzie następująco (tu: uruchomienie i wyświetlenie aplikacji Word oraz utworzenie nowego dokumentu)
3 | Dim appWord As Word.Application |
4 | Set appWord = New Word.Application |
Zalety wczesnego wiązania:
- ułatwiona edycja z wykorzystaniem IntelliSense. W powyższym przykładzie dla zmiennej appWord będzie podpowiadać się zestaw dostępnych metod i właściwości
- szybkość wykonania kodu- kompilator wie jakie zewnętrzne biblioteki należy uruchomić już na etapie prekompilacji
- dostęp do 'stałych' języka VBA dla zewnętrznej aplikacji (np.
WdInformation.wdActiveEndPageNumber
)
Wady wczesnego wiązania:
- ustawiając referencję do wskazanej biblioteki oczekiwana jest dokładnie ta sama wersja aplikacji, z którą wykonywana jest interakcja. Powyższy przykład nie zadziała z aplikacją MS Word w wersji 2010 lub wcześniejszą.
W kolejnym wpisie przedstawię pojęcie wiązania późnego...