poniedziałek, 3 lutego 2014

Przekazywanie danych do/ze schowka

W jaki sposób wykorzystać schowek (clipboard) w celu przekazania informacji pomiędzy różnymi aplikacjami, obszarami czy obiektami arkusza czy skoroszytu? W większości przypadków do dyspozycji mamy metody typu .Copy >> .Paste >> .PasteSpecial, które występują w modelu obiektowym całego pakietu Microsoft Office. Techniki te umożliwiają przekazywanie (kopiowanie) tabel, obiektów warstwy rysunkowej, tekstu, itp.

Istnieje jednak specjalna technika, która pozwala na zapełnienie schowka określonym tekstem, a także umożliwia pobranie aktualnych wartości ze schowka o ile dotyczą tekstu (lub wartości liczbowych). Prześledźmy to rozwiązanie w kolejnych krokach zaprezentowanych poniżej.

1. Niezbędne referencje
Metoda ta wymaga ustanowienia referencji do biblioteki 'Microsoft Forms 2.0 Object Library'. W tym celu w edytorze VBA wybieramy kolejno Menu >> Tools >> References >> odszukujemy i zaznaczamy w/w bibliotekę.
Wskazówka! Jeżeli w naszym projekcie utworzony jest choćby jeden UserForm oznaczać to będzie, że odpowiednie referencje zostały ustanowione.

2. Tworzenie instancji obiektu DataObject
Praca ze schowkiem wymagać będzie utworzenia obiektu, który umożliwi przekazywanie wartości. Poniższe linie tworzą tzw. wiązanie wczesne (early binding) do obiektu DataObject.


3. Dodanie tekstu do schowka
To pierwsza sytuacja, w której wykorzystamy uprzednio utworzony obiekt. W pierwszej kolejności zdefiniujemy jaki tekst ma trafić do schowka, ale dopiero kolejna linia procedury skieruje strumień tekstu w tą przestrzeń pamięci.


4. Pobranie wartości ze schowka
Także i w tym przypadku  niezbędne będą 2 linie kodu- pierwsza pobiera zawartość schowka do naszego obiektu, a kolejne linie prezentują różne warianty skierowania strumienia tekstu: do okna immediate, do komórki czy też do zakresu komórek.


5. Uwagi końcowe. 
Wykorzystanie obiektu DataObject umożliwia, przynajmniej na chwilę obecną, pracę wyłącznie z tekstem. Zawartość tego obiektu przechowywana jest tak długo jak długo istnieje obiekt. Zawartość przekazana do schowka pozostaje w nim także po wykasowaniu instancji obiektu DataObject.

Brak komentarzy:

Prześlij komentarz