プログラミング逆引き辞典

~ 多言語対応のプログラミングレシピ ~

VBA WshShellオブジェクト (WScript.Shell)で電卓処理を自動化

■VBAのWshShellオブジェクト (WScript.Shell)で電卓処理を自動化する方法
 
①WshShellオブジェクトを使う為の準備をする
VBA画面の「ツール」⇒「参照設定」⇒「Windows Script Host Object Model」を選択
 
 
②WshShellオブジェクトで電卓を起動し、「SendKeys」メソッドでキーの入力値を送信する
例)下記では「50 + 2」を計算して2秒後に電卓を閉じている


//Sleep 関数を使う為の宣言
Private Declare Sub Sleep Lib "kernel32" (ByVal ms As Long)

Sub Calc()

    //WshSellを使う為の準備
    Dim obj As IWshRuntimeLibrary.WshShell
    Set obj = New IWshRuntimeLibrary.WshShell
        
    //電卓を起動 ※電卓はもともと環境変数パスが通っているのでフルパスにする必要がない
    //第2引数:標準サイズ 最大化で開く場合は「3」
    //第3引数:同期実行
    obj.Run "calc.exe", 1, True
    
    //電卓をアクティブにする
    obj.AppActivate "calc"
    //1秒待つ
    Sleep 1000

    //「50」を入力
    obj.SendKeys "50"
    Sleep 1000
    
    //「+」を入力
    obj.SendKeys "{+}"
    Sleep 1000
    
    //「2」を入力
    obj.SendKeys "2"
    Sleep 1000
    
    //「Enter」を入力
    obj.SendKeys "{ENTER}"
    Sleep 2000
    
    //「Alt + F4」で電卓を終了する
    obj.SendKeys "%{F4}"
    
End Sub