• 締切済み

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

  • (vba)他のアプリケーションの右ctrlキーを押すには?

    excelのvbaを使って、他のアプリケーション(3270エミュレータ)上で、実行キーに割り当てられている「右ctrlキー」または「テンキーのenterキー」を押すようにしたくて、sendkeys "^"やsendkeys "{enter}"を使ってみましたが、うまくいきません。どうしたら良いでしょうか?

  • Ctrlキーが効かなくなりました

    Ctrlキーが急に使えなくなりました。 午前中まで使えていたのに、午後になり急に使えなくなりました。 Ctrlキーは左・右とも両方効きません。 隣のキーはちゃんと使用できますし、右のCtrlキーは今までほとんど使用していなかったので、キーボードの故障とは思えないのですが、Ctrlキーを無効にする設定などあるのでしょうか? OSはWindows Vista HomePremiumです。 因みに、ブラウザー上でもメモパッドでもOutlookでも使用できません。

  • キーボードでctrlキーが動きません

    こんばんは。dell xps8300を使用していますが、dell純正の有線キーボードのctrlキーが作動しません。購入して約2週間程なんですが、初めてエクセルを使用しコピペ時にctrlキーが右も左も動作しない事に今気づきました。初期不良でしょうか?それとも他の理由でしょうか? どなたか、教えて頂ければ助かります。

  • キーボードが押されたことの感知(エクセルVBA)

    キーボードが押されたことを、イベントとするマクロってできるのでしょうか?例えば、ctlキーが押されたら、"押されました"、離されたら”離れました”って表示する方法をご伝授願えればと思います。どなたか、VBAに詳しい方、宜しくお願いいたします。また、感知することが出来ないキーや、右や左で判別できない(例えば、shiftキー)キーもあるのでしょうか?

  • EXCEL VBA で他のアプリケーションを開く方法について

    EXCEL VBAで他のアプリケーションを開く方法について教えていただきたいことがあります。 現在開いているエクセルのブックと同じフォルダにある、"AAA"という名称のsqc形式のファイル(EAST社のSkyLink Ver9.0のコマンドファイルです)をVBAで開く。 SHELL関数で開くと思っていたのですが、 Sub Test() Dim MyPath As String, MyTask As Double MyPath = ActiveWorkbook.Path & "\" MyTask = Shell(MyPath & "AAA.sqc") SendKeys "%FO", True End Sub とすると 「プロシージャの呼び出し、または引数が不正です」 というメッセージが出てしまいます。 如何せんSHELL関数を使うのが初めてでして、色々調べても どうしても解決策にたどり着きません。 どうぞよろしくお願いいたします。

  • 「Ctrl」キーの不調

    何方かPCに詳しい方、ご教授頂けると助かります。 先日PC(asus A3N/L)を購入し使用しているのですが、 突然、左の「Ctrl」キーが利かなくなりました。 右の「Ctrl」は問題なく使用できますが、左だけ 使えません。 コピー&ペーストなどよくつかうので困っています。 ハードに問題があるならいたし方ないのですが、 同じようなご経験があるかたいらっしゃいますか?

  • Excel VBA 右クリックメニューを表示させる方法

    VBA については全く素人なので恐縮なのですが 何かの動作 を実際に行うのではなく ポップアップメニューが開くまで の中途半端な状態で処理を止めたいのです。 もちろんそれまでには別のコードがあって他の処理を行い ます。作業の最後に右ポップアップメニューを開いた状態 で終了したいんです。 Application.Sendkeys でどうにかなるのかと思っていたの ですが [プロパティボタン] などはないようで(当たり前か) かといってそれほど複雑な操作とも思えないので何か方法 がないものかとご相談申し上げる次第です。 宜しくご教示下さい。

  • キー操作 (WSH:コピー&ペースト)

    ホームページ上のデータをクリップボードに取り込んで メモ帳に写したいです。 キー操作でのコピー&ペーストがうまくいきません。 どこがいけないのでしょうか(WSHを使ってます)。 set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "^A" '「Ctrl」を押しながら「A」を押す WshShell.SendKeys "^C" '「Ctrl」を押しながら「C」を押す WSHShell.Run "notepad.exe" 'メモ帳を開く WshShell.SendKeys "^V" '「Ctrl」を押しながら「V」を押す よろしくお願いします。

  • エクセルVBAで…

    VBAからshell関数を使って、 FTPを起動して、 サーバーからテキストファイル(txt)を、 ローカルへ落としたいのですが… 落とすとEUCコードになってしまいます… FTPのオプションとかでshift-jisとかに直せるのでしょうか? よろしくお願いします(o*。_。)oペコッ

  • 左にあるFnキーと右Ctrlの配置を交換できないかと考えていました。

    左にあるFnキーと右Ctrlの配置を交換できないかと考えていました。 なぜなら右側にFnキーをおくことでHomeやEnd、Pgup Pgdnなどを片手でできるからです。 しかし、調べてみるとFnキーをソフト側でいじることはできないことがわかりました。 (一部のノートパソコンはBIOSからいじれるものもあるようなのですが、当方のDynabook SSでは弄ることはできませんでした。) そこで、キー配置を変える要領で例えばCtrl+→を押すことでHomeとおなじ機能を実現できないかと考えました。 Change Keyなどの多くのソフトはキー配置をいれかえるだけで、二つのキーの組み合わせの動作を変更するということはできませんでした。 しかしnodokaは結構カスタマイズができそうで、色々と試してみましたが、nodokaでは右側のCtrlだけと矢印を組み合わせるという動作を実現することができませんでした。 そこで、Windows 7の環境にて、Ctrl+矢印キーでHomeやEnd、Pgup Pgdnを実現する方法が他にもあったら教えていただけないでしょうか。 宜しくお願いします。

専門家に質問してみよう