Kopiuj VBA do schowka

W tym artykule zademonstrujemy, jak używać VBA do kopiowania elementów do schowka.

Może zaistnieć sytuacja, w której chcemy skopiować informacje w Excel VBA i przechowywać je w celu użycia w innej aplikacji lub w innym momencie, gdy makro Excel przestanie działać. Gdy makro przestanie działać, informacje przechowywane w zmiennej lub zmiennych przestają istnieć i nie można ich już pobrać. Sposobem na rozwiązanie tego problemu byłoby skopiowanie tych informacji do schowka.

Kopiowanie do schowka przy użyciu biblioteki obiektów HTML

Najprostszym sposobem korzystania ze schowka w Excel VBA jest wywołanie Biblioteki obiektów HTML.

1234567 Dane magazynu podrzędnego()Dim varText jako wariantDim objCP jako obiektvarText = "Niektóre skopiowany tekst"Ustaw objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextNapis końcowy

Ponieważ używamy późnego wiązania, deklarując zmienną objCP jako obiekt, nie musimy dodawać odwołania do programu Excel, aby ta procedura działała.

Gdybyśmy mieli teraz przejść do naszego arkusza programu Excel i kliknąć Wklej, tekst „Niektóre skopiowane dane” zostałby wstawiony do wybranej komórki.

Gdybyśmy mieli zmienić powyższą procedurę w funkcję, moglibyśmy przekazać tekst do skopiowania jako zmienną.

12345 Function StoreData(varText As Variant) jako StringDim objCP jako obiektUstaw objCP = CreateObject("HtmlFile")objCP.ParentWindow.ClipboardData.SetData "tekst", varTextKoniec funkcji

Moglibyśmy wtedy wielokrotnie wywoływać tę funkcję w naszym kodzie VBA, gdy musimy skopiować tekst do schowka. Tekst nie byłby zatem na stałe zakodowany w kodzie VBA.

123 Sub CopyData()StoreData "Niektóre skopiowany tekst"Napis końcowy

Możemy również użyć obiektu HTML do zwrócenia tekstu ze schowka - np. Wklejanie. W tym celu używamy GetData zamiast metody SetData.

12345 Funkcja ReturnData()Dim objCP jako obiektUstaw objCP = CreateObject("HtmlFile")ReturnData = objCP.parentWindow.clipboardData.GetData("tekst")Koniec funkcji

Możemy wtedy wywołać tę funkcję, aby zwrócić dane przechowywane w schowku.

123 Sub WklejDane()MsgBox ReturnDataNapis końcowy

Sprytną sztuczką byłoby połączenie tych dwóch funkcji, abyśmy mogli użyć tej samej funkcji do kopiowania i wklejania danych, w zależności od tego, czy wysyłamy dane do schowka, czy też chcemy pobrać dane ze schowka.

1234567891011 Funkcja StoreOrReturnData(Opcjonalne strText As String) As StringDim varText jako wariantDim objCP jako obiektUstaw objCP = CreateObject("HtmlFile")zmiennaTekst = strTekstJeśli strText "" WtedyobjCP.ParentWindow.ClipboardData.SetData "tekst", varTextW przeciwnym razieStoreOrReturnData = objCP.ParentWindow.ClipboardData.GetData("tekst")Zakończ, jeśliKoniec funkcji

W powyższym kodzie możemy uczynić zmienną strText opcjonalną - oznacza to, że jeśli chcemy Skopiować dane, dołączymy tekst do skopiowania, natomiast jeśli chcemy Wkleić dane, to go wykluczymy.

Następnie przypiszemy zmienną łańcuchową (strText) do zmiennej Variant, aby była przechowywana w metodzie SetData obiektu pliku HTML.

Aby skopiować dane, możemy skorzystać z tej procedury, pamiętaj, że dołączamy tekst do skopiowania.

123 Sub CopyData()StoreOrReturnData "SomeCopiedText"Napis końcowy

Aby wkleić dane, możemy skorzystać z tej procedury. Okno komunikatu pokaże wartość zapisaną w schowku.

123 Sub WklejDane()MsgBox StoreLubReturnDataNapis końcowy

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave