poniedziałek, 6 października 2014

Interakcja pomiędzy aplikacjami MS Office (1 z ...wielu)

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)


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...

Brak komentarzy:

Prześlij komentarz