Excel VBA SendKeys
V tomto článku se zobrazí osnova aplikace Excel VBA SendKeys. Přemýšleli jste někdy o vytvoření programu, který automaticky uloží pracovní list a nemusíte k tomu stisknout tlačítko Ctrl + S nebo Excel Save? Zdá se, že je to fantazie, že? To však lze udělat. Ve VBA existuje příkazový příkaz s názvem SendKeys, který vám umožňuje posílat stisknutí kláves jako příkaz do aplikace stejným způsobem, jako byste použili klávesnici k provedení úkolu. (Např. Uložení souboru. K uložení souboru provedete tlačítkovou klávesnici Ctrl + S). Doporučujeme použít SendKeys jako poslední možnost při automatizaci jakéhokoli úkolu. Důvodem je to, jak jsme již diskutovali, SendKeys odešle stisknutí kláves do aplikace, která je aktuálně aktivní. Co když máte aktivní okno aplikace v době spuštění kódu, pod kterým nechcete, aby se změny projevily? Dá to neočekávané výsledky, že? To je jediný důvod, měli bychom použít SendKeys jako poslední možnost při automatizaci věcí. Lze jej však použít pro malou automatizaci, kde žádné jiné aplikační prostředí nezasahuje do prostředí, ve kterém jste chtěli, aby ke změně došlo.
Metoda syntaxe SendKeys:
SendKeys(String As String, (Wait))
Kde,
První argument „String As String“ určuje kombinace kláves, které jste chtěli použít v programu (např. Kombinace kláves Ctrl + S).
Čekat by byl volitelný parametr, který vezme booleovské hodnoty TRUE a FALSE. Pokud čeká hodnota TRUE, znamená to, že systém bude čekat na zpracování klíčů a poté přejde na další řádek a zkompiluje / spustí to samé. Pokud je hodnota čekání FALSE (může zůstat prázdná), systém nebude čekat na zpracování klíčů a bude pokračovat ve spuštění celého kódu.
Používají se některé metody, pomocí kterých lze kombinovat klávesové zkratky s klávesami Ctrl, Shift nebo Alt. Podívejme se, jak to můžeme udělat. Následující tabulka uvádí kombinace klávesových zkratek pro SendKeys s klávesami Ctrl, Shift a Alt:
Klíč, který se má kombinovat s | Operátor, který má být použit před klávesami pro kombinaci |
Posun | + (Keyboard Plus Sign) |
Ctrl | (Znak správce operátora) |
Alt | % (Procenta) |
Co to znamená? To znamená, že pokud chcete pod kódem použít kombinaci kláves jako Ctrl + S, můžete použít metodu SendKeys a provést ji pomocí SendKeys, pak operátora Caret (^) pro Ctrl a poté „s“. Uloží aktuální list do vašeho Excel souboru.
Jak používat metodu SendKeys v aplikaci Excel VBA?
Naučíme se používat metodu SendKeys v Excelu pomocí kódu VBA.
Tuto šablonu VBA SendKeys Excel si můžete stáhnout zde - VBA SendKeys Excel TemplateVBA SendKeys - Příklad č. 1
Představme si několik jednoduchých příkladů, které nám umožní hlouběji se ponořit do práce s příkazem VBA SendKeys.
V tomto prvním příkladu se chystáme vidět velmi jednoduchou automatizaci, která automaticky uloží aktuální otevřený soubor Excel. Pro uložení souboru nemusíte stisknout tlačítko Uložit nebo Ctrl + S. Chcete-li dosáhnout výsledku, postupujte podle níže uvedených kroků.
Krok 1: Otevřete modul na kartě nabídky Vložit, jak je znázorněno níže.
Krok 2: Definujte nový dílčí postup, který pojme vaše makro.
Kód:
Sub Příklad_1 () Konec Sub
Krok 3: K uložení libovolného souboru máte kombinaci klávesových kláves jako Ctrl + S. Chcete-li jej převést na kód, můžeme použít argument operátora (^) a poté klíčové slovo „s“ jako argument pro příkaz SendKeys.
Kód:
Sub Example_1 () Application.SendKeys ("s") End Sub
Zde klíčové slovo Aplikace určuje aplikaci, do které zasíláme stisknutí kláves (v tomto případě aplikace Excel). „S“ v závorkách určuje podobnou operaci klávesnice Ctrl + S.
Krok 4: Spusťte tento kód stisknutím tlačítka Spustit nebo stisknutím klávesy F5.
Po úspěšném spuštění tohoto kódu bude váš soubor uložen.
VBA SendKeys - Příklad č. 2
Nyní se chystáme vidět, jak zavřít aktuální aplikaci zasláním programových kláves přes kód makra pomocí metody SendKeys. Postupujte podle následujících pokynů:
Krok 1: Napište dílčí postup, který může držet vaše makro pod modulem.
Kód:
Sub Příklad_2 () Konec Sub
Krok 2: Pomocí metody Application.SendKeys předejte programová tlačítka klávesnice aplikaci. Protože aktuální podokno VBA lze zavřít klávesovou zkratkou Alt + Q, můžeme v makru použít „% q“.
Kód:
Sub Example_2 () Application.SendKeys ("% q") End Sub
Krok 3: Stisknutím tlačítka Spustit nebo F5 spusťte tento kód. Po spuštění tohoto kódu se aktuální editor jazyka ukončí a přejdete do souboru Excel.
VBA SendKeys - Příklad č. 3
Nyní budeme psát kód, který automaticky otevře Poznámkový blok a automaticky do něj zapíše text. Podívejte se na screenshot níže:
Krok 1: Napište dílčí postup, který může držet vaše makro pod modulem.
Kód:
Sub Příklad_3 () Konec Sub
Call Shell umožňuje systému otevřít aplikaci. Cesta je místo, kde je Notepad.exe. vbNormalFocus je volitelný argument, který určuje zaměření na otevření a obnovení aplikace do původní velikosti a pozice.
Krok 2: Použijte Call and Sendkeys v kombinaci, aby systém mohl přidat text v programu Poznámkový blok.
Kód:
Sub Příklad_3 () Volání prostředí ("C: \ Windows \ System32 \ Notepad.exe", vbNormalFocus) End Sub
Krok 3: Zde přidáváme text „Hello VBA!“ Pomocí SendKeys do programu Poznámkový blok. True určuje dobu čekání na příkaz SendKeys.
Kód:
Sub Příklad_3 () Shell volání ("C: \ Windows \ System32 \ Notepad.exe", vbNormalFocus) Volání SendKeys ("Hello VBA!", True) End Sub
Krok 4: Spusťte tento kód stisknutím klávesy F5 nebo kliknutím na tlačítko Spustit.
Takto můžeme pomocí metody SendKeys automatizovat aplikace pomocí makra VBA.
Co si pamatovat
- Při používání SendKeys buďte velmi opatrní, protože pokud máte otevřených více aplikací, může to přinést neočekávané výsledky.
- Pomocí SendKeys můžete automatizovat malé úkoly, jako je uložení souboru Excel nebo uzavření souboru Excel atd.
- Při pokusu o automatizaci věcí použijte jako poslední možnost metodu SendKeys.
Doporučený článek
Toto je průvodce VBA SendKeys. Zde diskutujeme o tom, jak používat metodu SendKeys v Excel VBA spolu s praktickými příklady a stahovatelnou šablonou Excel. Můžete si také prohlédnout naše další doporučené články -
- VBA while Loop (příklady se šablonou Excel)
- VBA Environ | Excel šablony
- Vyhledání cíle VBA (příklad)
- Jak změnit název listu v Excel VBA?