• 締切済み

Excel VBA で CTRLキーを送る方法

EXCEL VBA で他のアプリケーションにキーをコードを送り制御したく、Sendkeys を使ってみましたが、CTRLキー(単一キー)の送信が出来ません。Sendkeys "^", 1 では無反応。 制御されるアプリは右のCTRLキーと左のCTLキーではことなった動作をします。出来れば右のCTRLキー、左のCTLキーの送信方を教えてください。 VBAで負荷でしたら、Shell関数で呼び出せるようなものはありませんでしょうか。

みんなの回答

noname#259269
noname#259269
回答No.2

不可能ではないけど、かなりしんどそうですね。 SendInput という API を用いることになります。 .NET で開発すれば幾分楽かも。私なら、.NET で EXE か DLL を開発してそれを VBA から呼び出すかなぁ。 サンプルもあるので↓ http://www.pinvoke.net/default.aspx/user32.SendInput

mana_okwav
質問者

お礼

edp3142さん ありがとうございました。解決しましたといいたいところですが、VBAしか経験なく、解決できません。次ののコードをVB6またはVB.netで記述すればどうなりますでしょうか。これを機会にVBを経験したいので教えてください。厚顔で恐縮です。 真奈 Sub SendKeyCode() const SessinonCode="MyCode" AppActivate SessionCode SendKeys "右のCtrl Key", true SendKeys "左のCtrl Key", true End Sub Key Boadは日本語106です。 これが出来れば、VBからVBAを呼び出して処理できそうなので。 DLLを作るなどとても手に負えません。

mana_okwav
質問者

補足

解決することが出来ましたので、お礼まで。 http://mt-soft.sakura.ne.jp/web_dl/vb-parts/key_sendinput/ に初心者にも分る例がありましたので理解できました。真奈

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

VBは良くわからないけどcrtlとかは通常のキーとは違った「モディフィアキー」(モディファイアキー)だとか言われる類で個別の送信方法が必要になる筈だよ。 ただ、探すと「受け取る方法」ばっかりでてくるかも・・・ http://www.google.com/search?lr=lang_ja&q=vba%20%E3%83%A2%E3%83%87%E3%82%A3%E3%83%95%E3%82%A1%E3%82%A4%E3%82%A2%E3%82%AD%E3%83%BC%20%E9%80%81%E4%BF%A1 案の定、この単語群だけだと(上位には)出てこない…

関連するQ&A