Przekaż dowolne informacje między aplikacjami VBA przy użyciu schowka

  • Gabriel Brooks
  • 0
  • 3889
  • 880
Reklama

Właśnie wtedy, gdy pomyślałem, że skończyłem z moją najnowszą serią porad i wskazówek VBA Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Jak wysyłać wiadomości e-mail z arkusza kalkulacyjnego Excel za pomocą skryptów VBA Nasz szablon kodu pomoże Ci skonfigurować automatyczne wiadomości e-mail z w programie Excel przy użyciu obiektów danych współpracy (CDO) i skryptów VBA. Odkryłem jeszcze jedną naprawdę fajną technikę, której każdy może użyć do łatwego przekazywania informacji między dwiema aplikacjami, które wykorzystują VBA jako język skryptowy zaplecza.

Wielką zaletą VBA jest to, że oferuje tak wiele funkcji i narzędzi. 3 sposoby otwierania aplikacji i Windows zmaksymalizowane za pomocą skryptu VB [Windows] 3 sposoby otwierania aplikacji i Windows zmaksymalizowane za pomocą skryptu VB [Windows] Jeśli istnieje rzecz, którą uwielbiam robić, to pisać skrypty VB. Niezależnie od tego, czy jest to plik skryptu Windows, czy skrypt VBA wewnątrz aplikacji, skrypty zapewniają możliwość dodania funkcjonalności do aplikacji… które zwykle są częścią aplikacji VB, aczkolwiek w nieco rozwodnionej wersji.

Jedną z najbardziej frustrujących części pracy z VBA w określonych aplikacjach jest to, że nie zawsze łatwo jest uzyskać dwie aplikacje “rozmowa” do siebie. Wynika to z faktu, że wszystkie używane zmienne są dostępne tylko w zakresie samej aplikacji, a nie z dowolnego miejsca na komputerze.

Powiedziawszy to, tam sposoby przekazywania informacji Jak zintegrować dane programu Excel z dokumentem programu Word Jak zintegrować dane programu Excel z dokumentem programu Word Podczas tygodnia roboczego prawdopodobnie wiele razy zdarza się, że kopiujesz i wklejasz informacje z programu Excel do programu Word lub w inny sposób na około. W ten sposób ludzie często tworzą pisemne raporty… między aplikacjami opartymi na VBA, takimi jak Word lub Excel. W wielu przypadkach, nawet w profesjonalnym środowisku, programiści korzystają z komunikacji między aplikacjami z plikami danych. Może to działać, ale wprowadza element potencjalnego naruszenia lub błędu - taki jak usunięcie lub modyfikacja tych plików - w celu zepsucia prac.

Innym podejściem, które można wypróbować w przypadku bardzo szybkich transakcji informacji między aplikacjami, jest przekazywanie danych do schowka, a następnie odczytywanie tych informacji z innej aplikacji.

Przekazywanie informacji za pomocą schowka

W tym przykładzie pokażę, jak przekazać trzy fragmenty informacji tekstowej - wartości w 3 polach tekstowych - bezpośrednio do arkusza kalkulacyjnego Excel, który uruchamia makro Word.

Konfiguracja początkowa jest pokazana poniżej. To dokument programu Word, w którym przełączyłem się do trybu projektowania i utworzyłem 3 etykiety i 3 pola tekstowe, aby użytkownik mógł wpisać informacje. Kliknięcie na “Zatwierdź” przycisk uruchomi kod transferu danych.

Kliknij dwukrotnie nowy przycisk utworzony w trybie projektowania, aby przejść do ekranu edytora VB. Pierwszą rzeczą, którą chcesz zrobić, jest dodanie odwołania, które daje dostęp do schowka systemowego. Kliknij Narzędzia - Referencje.

Przewiń listę referencji i wybierz “Biblioteka obiektów Microsoft Forms 2.0”. Po kliknięciu OK, twoja sesja edycji VB ma teraz dostęp do metod, które pozwalają ci czytać lub pisać ze schowka.

Właśnie to teraz zrobimy. W funkcji dla “Zatwierdź” przycisk, wprowadziłem następujący kod.

Dim strClipText As DataObject Dim strInputText As String Dim errCode As Integer Set strClipText = Nowy DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txextTextext stroxextBox3 PutInClipboard 'Set objWB = objExcel.Workbooks.Open ("c: /temp/MyExcelFile.xlsm") errCode = Shell ("C: \ Program Files (x86) \ Microsoft Office \ Office12 \ excel.exe c: / temp / MyExcelFile .xlsm ”)

Widzisz jakie to proste? Obiekt danych strClipText to obiekt schowka, którym można manipulować. Najpierw wczytaj wszystkie wartości pól do pojedynczej zmiennej łańcuchowej, z każdym polem danych oddzielonym przecinkiem lub czymkolwiek, co Ci odpowiada.

Następnie musisz utworzyć plik Excel, który otwierasz w powyższym poleceniu Shell. W programie Excel chcesz dodać to samo odwołanie “Biblioteka obiektów Microsoft Forms 2.0”, a następnie w funkcji Workbook.Open () możesz uruchomić następujący skrypt.

Dim msObj As MSForms.DataObject Dim strText As String Dim strResult () As String Dim intArrayCount As Integer Dim x As Integer Set msObj = Nowe MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () = "(split)" ) intArrayCount = Application.CountA (strResult) For x = 0 To intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Komórki (x + 1, 2) .Value = strResult (x) Dalej

Ponownie, kiedy go przejdziesz, jest to prosty i bardzo szybki skrypt. Tworzy obiekt MSForms, pobiera najnowsze dane ze schowka i umieszcza je w zmiennej typu string. Następnie dzieli tę pojedynczą, długą zmienną łańcuchową według dowolnego ogranicznika, którego użyłeś, na tablicę pojedynczych łańcuchów, a na koniec przechodzi przez tablicę (CountA podaje długość tablicy) i przekazuje każdą wartość do arkusza w kolumnie 2.

Oto ostateczne wyniki.

Teraz, przy odrobinie kreatywności, możesz użyć tej techniki do uruchomienia dowolnej aplikacji opartej na VBA i “pasta” informacje w nim.

Zawsze możesz zrobić to samo, korzystając z biblioteki referencyjnej programu Excel, ale w takim przypadku otwierasz plik Excel i manipulujesz danymi w tym pliku. W powyższym przypadku dosłownie otwierasz aplikację Excel i wyświetlasz plik, a makro uruchamiania w programie Excel wykonuje resztę pracy.

Jest to najbardziej przydatne, gdy istnieją inne aplikacje, takie jak wiele aplikacji interfejsu operatora w wielu zakładach produkcyjnych, które są oparte na VBA, ale mogą nie mieć dostępnych bibliotek do ścisłego połączenia tych dwóch aplikacji. Korzystanie ze schowka w sposób zautomatyzowany jest szybki, łatwy i wykonuje zadanie.

Wypróbuj powyższe skrypty i daj nam znać, jak to działa w twoim systemie. Czy musiałeś go ulepszyć? Czy masz jakieś sugestie, jak ulepszyć kod? Podziel się swoimi przemyśleniami w sekcji komentarzy poniżej.

Kredyt obrazu: Transfer pliku obrazu za pośrednictwem Shutterstock




Jeszcze bez komentarzy

O nowoczesnej technologii, prostej i niedrogiej.
Twój przewodnik w świecie nowoczesnych technologii. Dowiedz się, jak korzystać z technologii i gadżetów, które nas otaczają każdego dnia i dowiedz się, jak odkrywać ciekawe rzeczy w Internecie.