Předávání jakékoli informace mezi aplikacemi VBA pomocí schránky

  • Peter Holmes
  • 0
  • 2760
  • 137
reklama

Právě když jsem si myslel, že jsem dokončil svou poslední dávku VBA tipů a triků Jak posílat e-maily z tabulky Excel pomocí skriptů VBA Jak posílat e-maily z tabulky Excel pomocí skriptů VBA Naše kódová šablona vám pomůže nastavit automatické e-maily od v rámci aplikace Excel pomocí skriptů Collaboration Data Objects (CDO) a VBA. „Objevil jsem ještě jednu opravdu skvělou techniku, kterou může kdokoli použít ke snadnému předávání informací mezi dvěma aplikacemi, které využívají VBA jako back-end skriptovací jazyk.

Na VBA je skvělé, že vám poskytuje tolik funkcí a nástrojů. 3 způsoby, jak otevřít aplikace a maximalizovat Windows pomocí VB Script [Windows] 3 způsoby, jak otevřít aplikace a maximalizovat Windows pomocí VB Script [Windows] Pokud existuje věc, kterou rád dělám, je to psaní skriptů VB. Ať už se jedná o soubor Windows Script nebo skript VBA uvnitř aplikace, skriptování poskytuje možnost přidávat funkce aplikacím…, které jsou běžně součástí aplikací VB, i když v poněkud vylepšené verzi..

Jednou z nejvíce frustrujících součástí práce s VBA v konkrétních aplikacích je to, že není vždy snadné získat dvě aplikace “mluvit” navzájem. Důvodem je to, že všechny proměnné, které používáte, jsou přístupné pouze v rámci samotné aplikace, nikoliv z jiného místa v počítači.

S tím řekl, tam jsou způsoby předávání informací Jak integrovat data Excelu do dokumentu Word Jak integrovat data Excelu do dokumentu Word Během pracovního týdne je pravděpodobně mnoho časů, kdy zjistíte, že kopírujete a vkládáte informace z aplikace Excel do aplikace Word nebo jiným způsobem. kolem. Takto lidé často vytvářejí písemné zprávy… mezi aplikacemi založenými na VBA, jako je Word nebo Excel. V mnoha případech, i v profesionálním prostředí, se programátoři uchylují ke komunikaci mezi aplikacemi s datovými soubory. To může fungovat, ale zavádí prvek možného neoprávněného zásahu nebo chyby - jako je vymazání nebo úprava těchto souborů - za účelem zmatení prací.

Dalším přístupem, který můžete vyzkoušet pro velmi rychlé transakce informací mezi aplikacemi, je předávání dat do schránky a jejich čtení z jiné aplikace..

Předávání informací pomocí schránky

V tomto příkladu vám ukážu, jak předat tři kusy textových informací - hodnoty uvnitř 3 textových polí - přímo do tabulky aplikace Excel, kterou se spustí makro aplikace Word..

Počáteční nastavení je uvedeno níže. Je to dokument aplikace Word, ve kterém jsem přepnul do návrhového režimu a vytvořil 3 štítky a 3 textová pole, aby mohl uživatel zadat informace. Kliknutím na “Předložit” tlačítko spustí kód pro přenos dat.

Dvojitým kliknutím na nové tlačítko, které jste vytvořili v režimu návrhu, se dostanete na obrazovku editoru VB. První, co budete chtít udělat, je přidat odkaz, který vám umožní přístup do systémové schránky. Klikněte na Nástroje - Reference.

Přejděte seznamem odkazů a vyberte “Knihovna objektů Microsoft Forms 2.0”. Po kliknutí na tlačítko OK má vaše editační relace VB nyní přístup k metodám, které umožňují číst nebo psát ze schránky.

To je přesně to, co teď uděláme. Ve funkci pro “Předložit” tlačítko, zadal jsem následující kód.

Dim strClipText As DataObject Dim strInputText As String Dim errCode As Integer Set strClipText = New DataObject strInputText = ThisDocument.txtBox1.Value & "," & ThisDocument.txtBox2.Value & "," & ThisDocument.txtBox3.Value strClipText.SetText strInputText. 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 ")

Vidíte, jak je to jednoduché? Datový objekt strClipText je objekt schránky, se kterým můžete manipulovat. Nejprve si přečtěte všechny hodnoty pole do jediné řetězcové proměnné, přičemž každé datové pole je odděleno čárkou, nebo cokoli pro vás funguje.

Dále budete muset vytvořit soubor Excel, který otevíráte příkaz Shell výše. V Excelu budete chtít přidat stejný odkaz “Knihovna objektů Microsoft Forms 2.0”, a potom ve funkci Workbook.Open () můžete spustit následující skript.

Dim msObj jako MSForms.DataObject Dim strText jako String Dim strResult () As String Dim intArrayCount jako Integer Dim x As Integer Set msObj = Nový MSForms.DataObject msObj.GetFromClipboard strText = msObj.GetText strResult () ", Split" ) intArrayCount = Application.CountA (strResult) Pro x = 0 Do intArrayCount - 1 ThisWorkbook.Sheets ("Sheet1"). Buňky (x + 1, 2) .Value = strResult (x) Další

Znovu, když to provedete, je to jednoduchý a velmi rychlý skript. Vytvoří objekt MSForms a získá nejnovější data ze schránky a umístí je do řetězcové proměnné. Potom rozdělí tuto jednoduchou proměnnou dlouhého řetězce libovolným oddělovačem, který jste použili, do pole jednotlivých řetězců, a nakonec prochází skrz pole (CountA vám dává délku pole) a každou hodnotu odešle do listu ve sloupci 2..

Zde jsou konečné výsledky.

Nyní, s trochou kreativity, můžete tuto techniku ​​použít ke spuštění jakékoli aplikace založené na VBA a “vložit” informace do ní.

To samé můžete vždy udělat pomocí referenční knihovny Excel, ale v tom případě byste tiše otevírali soubor Excel a manipulovali s daty uvnitř tohoto souboru. Ve výše uvedeném případě doslova otevíráte aplikaci Excel a zobrazujete soubor a necháte spouštěcí makro v Excelu zbytek práce.

To je nejužitečnější, když existují jiné aplikace, jako je mnoho aplikací rozhraní operátora v mnoha výrobních zařízeních, které jsou založeny na VBA, ale nemusí mít tyto knihovny k dispozici pro těsné propojení těchto dvou aplikací. Použití schránky automatizovaným způsobem, jako je tento, je rychlé, snadné a zvládne práci.

Vyzkoušejte výše uvedené skripty a dejte nám vědět, jak to ve vašem systému funguje. Museli jste to vyladit? Máte nějaké návrhy, jak vylepšit kód? Sdílejte své myšlenky v sekci komentářů níže.

Obrázek Kredit: Přenos obrázku pomocí Shutterstocku




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.