Excel VBA:他のソフト(メモ帳)を制御する|Shell・SendKeys

Excelでメモ帳を起動するなどの制御するVBAを掲載しています。




Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ


ここではメモ帳を起動・文字入力・ファイルの保存・閉じるの操作をVBAで行います。

操作はShell関数と Sendkeysメソッドを使います。

Sendkeysで操作するには、対象ソフトがアクティブでないといけません。

又、想定以外のことが発生した場合、うまくいかなくなります。

例えば今回の場合、同名のファイルが存在する場合、「上書きしますか?」のメッセージが出る為、うまく制御できません。

Shell関数の構文

Shell(pathname[,windowstyle])

  • pathname:(省略不可)実行するプログラム名を指定します。
  • windowstyle:(省略可)実行時のウィンドウ形式を指定します。

引数windowstyleで使用できる定数

定数 内容
vbHide 0 フォーカスを持った、非表示のウィンドウ
vbNormalFocus 1 フォーカスを持った、元のサイズと位置に復元されたウィンドウ
vbMinimizedFocus 2 (既定値)フォーカスを持った、最小化のウィンドウ
vbMinimizedFocus 3 フォーカスを持った、最大化のウィンドウ
vbNormalNoFocus 4 フォーカスを持たない、元のサイズと位置に復元されたウィンドウ
vbMinimizedNoFocus 6 フォーカスを持たない、最小化のウィンドウ

Sendkeysメソッドの構文

キーボード操作をアクティブなウィンドウに送信します。

SendKeys string, [ wait ]

  • string:(省略不可)キーボード操作を指定する文字列式
  • wait:(省略可)待機モードを指定します。
    FALSE:(既定値)キーが送信された直後のプロシージャに制御が戻ります。
    TRUE:キーボード操作が渡るまで処理が中断されます。

関連する「Excelでランチャーソフトを作ってみよう」を掲載していますので参照してください。




メモ帳を制御するVBA


VBAコードの流れの解説

  1. メモ帳(ノートパッド)を起動
  2. 文字を入力
  3. メニューを開きファイルの保存を実行 「ALT」+「F」「S]キー
  4. Enterキー
  5. メモ帳を'終了します。「ALT」+「F4」キー

ExcelシートのVBAコード

Private Sub ExMemo()
    'メモ帳(ノートパッド)を起動
    Shell "c:\windows\system32\notepad.exe", vbNormalFocus
    DoEvents
    '文字を入力
    SendKeys "他のソフトを操作テスト"
    'メニューの保存 「ALT」+「F」「S]
    SendKeys "%FS", True
    'ファイル名
    SendKeys "c:\test01.txt", True
    'Enterキー
    SendKeys "{ENTER}", True
    '既に同名のファイルが存在する場合、
    '「上書きしますか?」のメッセージが出る為、
    'うまく終了できません。
    '終了します。「ALT」+「F4」
    SendKeys "%{F4}", True
End Sub

Private Sub CommandButton1_Click()
    ExMemo
End Sub



Excel実行画面

「メモ帳をコントロール」ボタンをクリックすると、ExMemo()プロシージャが呼ばれます。

エクセルにコマンドボタンを設置

SendKeys "他のソフトを操作テスト" が実行された画面です。

文字が入力されています。

1行目に入力されている


Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved