[[20200312152851]] 『エクセルマクロで右側のCtrlをキーボードから入力』(あおうめ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エクセルマクロで右側のCtrlをキーボードから入力したかのようにする方法がわかりません』(あおうめ)

エクセルマクロでSendkeys等で右側のCtrlをキーボードから入力したかのようにする方法が分からず困っております。
どうやら左右のCtrlキーの判別が出来ていないようです。
分かる方いらっちゃいましたらご教授お願いいたします。

< 使用 Excel:Excel2016、使用 OS:Windows10 >


SendKeysでは駄目でしょうね。 APIのkeybd_eventを使って、VK_RCONTROL(&HA3)を押すようなコードを書くと思います。
右CTRLキーを押す事で、何を実現しようとしているのでしょうか?
(???) 2020/03/12(木) 16:06

# 重なっちゃいました。済みません。

回答ではなく、確認です。

あなたのキーボードは左右のCTRLの機能に違いがあるのですか?
WindowsAPIで使用するキーコード表でも区別はされていませんね。
両方とも区別はしないのが前提と思っています。
もし、キーボードのキーの割当を変えているのであれば、
変更後の機能に沿ったものをSendKeysで指定すればよいと思います。
 
参考までに左右のCtrlを使い分ける趣旨を教えてください。後学のためです。

(γ) 2020/03/12(木) 16:16


返信ありがとうございます。
Sendkeyではダメなんですね・・・
初心者の私には厳しいですかね

当方のやりたいことですがエクセルマクロから別ソフトを操作したい
と思い別ソフトで右Ctrlキーが必要となるためです。
よろしくお願いします。
(あおうめ) 2020/03/12(木) 16:32


訂正です。
キーコード表の簡略版を見て判断していました。
左右でキーコードは違うんですね、どうも失礼しました。

回答ありがとうございました。
そうですか、別アプリケーションですか。
APIを使ってキーストロークを送り込むことになるのでしょうね。
タイミングによる不安定という問題が残るかもしれません。

(γ) 2020/03/12(木) 16:45


操作したいアプリの名前を出せないのであれば、ご自分で頑張って試してもらうしかないです。 何のアプリに何のキーを送る事でどういう動作になれば良いか判らないと、こちらで作っても動作確認ができませんので、サンプルを書く事もできません。(同じアプリでなくても構わないのですが、右CTRLで動作が変わるアプリを思いつかないのです)

ショートカットキーであれば、代わりにSendkeysでメニューを開き、右CTRLを使った場合と同じ動作をさせられるかもしれないのですが、これも対象が判らないと判断できないです。

対象となるアプリは、Excelマクロから起動して良いのか、それとも無関係に既に起動しているものなのかでもコードが違ってきますし、無関係の場合は、一意なクラス名またはウィンドウタイトル名からウィンドウハンドルを得るとか、APIを使いまくりになります。 キーを送る箇所だけでなく、送り先を特定するのも、それなりに難しいのですよ。

まずは、教えたキーワードでWeb検索し、見つけた情報をいろいろ試してみてください。 APIでキーを押すこと、離すことで、キーを押したのと同じ動作になります。
(???) 2020/03/12(木) 16:57


とりあえず、基本形だけ書いておきます。CTRL+C する例です。(右CTRLでも左でも同じ動作ですが)
 Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, _
    ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
 Const KEYEVENTF_EXTENDEDKEY = &H1
 Const KEYEVENTF_KEYUP = &H2
 Const VK_RCONTROL = &HA3
 Const VK_C = &H43

 Sub test()
    keybd_event VK_RCONTROL, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_C, 0, KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_C, 0, KEYEVENTF_KEYUP Or KEYEVENTF_EXTENDEDKEY, 0
    keybd_event VK_RCONTROL, 0, KEYEVENTF_KEYUP Or KEYEVENTF_EXTENDEDKEY, 0
 End Sub

このまま動かしてもExcel上で動いてしまうので、対象となるアプリをアクティブにする必要があるでしょう。
(???) 2020/03/12(木) 17:52


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.