一年くらい前に作ったSendkeyを含んだマクロをまた使うことになりました。
再使用してみると、他のコードの部分は正常なのにSendkeyの部分だけが正常作動せず、空打ちしたように変化しないまま次のコードに移ります。
Excel2003使用ですが、Excel97の入った他のPCでやっても同じ現象が起こります。
そこで、テストにヘルプのSendkey例文をVBEに貼り付けてみましたが、やはりその部分だけ作業せず先へ進んでしまいます。
Sendkeyの行では、不適切なキーをキーボードから打った時によく鳴るビービーという音がPCから聞こえてきます。
自分が基本的な操作を1つ忘れているのじゃないかと思うのですが、それが何なのか見当が付きません。
なにかお気づきの点はないでしょうか?
キーロガーを防止の為、ウィルスソフトがはねているのかと思いOFFにしてみましたが、関係ありませんでした。
テストした例文は下記です。
Sub x()
Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1)
AppActivate ReturnValue
For I = 1 To 20
SendKeys I & "{+}", True
Next I
SendKeys "=", True
SendKeys "%{F4}", True
End Sub
No.2ベストアンサー
- 回答日時:
こんばんは。
>Sendkeyステートメントがどんな仕組みなのか全く知らないので原因が分からないです。
私も、動かない現象自体は、私も悩まされてきた経験はあります。それが、以下で出すようなコードです。もし、動かないとすれば、常駐しているソフトには違いないのですが、セキュリティソフトではなさそうなのです。(以前、試した範囲です)
ただし、ステップインではうまく行かないことがあります。
>MS-IMEは削除しATOKにているのでその影響かも知れないです。
私の知っている範囲ですと、ATOK は、MS-Office に入り込むような仕組みにはなっているのですが、Sendkey が動かないということは、ちょっと、今のところ想像がつきませんね。
それで、昔、やっていた方法を披露しておきます。
しょせん、Sendkeyは、どこから送ろうが関係ないから、VBScript のExcel外部から動かす方法を私は考えました。
>これは一度キーボードのソフトに渡されてそこから目的のアプリケーションへキーが送られているんでしょうか。それともVBAから直接にアプリケーションに送られているんでしょうか。
それは、VBAから、ほんの短い間、バッファに入って、送られるようですね。
その理由は、外部ソフトによっては、まとめて、2段階の処理でも、キーの処理は1回でまとめて送っても、2段階の動作が動くからです。
逆に、バッファ自体が、何かで阻止されるか、チェックを受けるようにされていれば、確かに動きません。セキュリティソフトの種類かな?
それと、おっしゃるような、「一度キーボードのソフトに渡されてそこから目的のアプリケーションへキーが送られている」という、別のテクニックがあったはずですが、私は、正直なところ、VBAで、そこまでするのかなって思いがあって、あまり追求していないのです。
Dim ReturnValue, I
ReturnValue = Shell("CALC.EXE", 1)
AppActivate ReturnValue
With CreateObject("Wscript.Shell")
For I = 1 To 20
.SendKeys I & "{+}", True
Next I
.SendKeys "=", True
Application.Wait Now() + TimeValue("00:00:05")
.SendKeys "%{F4}", True
End With
ところで、念のためなのですが、これらの一連のコードは、私は、VBE からです。ワークシートからではないのです。それと、ちょっと表現が分かりにくいかもしれませんが、Excel自体は、静的な状態でマクロを動かしています。自動保存や時間で動くようなツールは、一切ありません。
たびたびすみません。
教えていただいたWscriptを使うとうまくいきました。
こういう解決法があるんですね。
よく分かりませんが、Excelでなく外から送ってやれば動くという事なんでしょうね。
去年このマクロを作った時は正常だったので、その後のインストールとか設定変更の影響なんだろうと思います。
有り難うございました。
No.1
- 回答日時:
こんばんは。
>AppActivate ReturnValue
もし、うまくいかないとすると、その部分ですね。
途中で、どこかに触って、Excelに戻ってきてしまっているかもしれません。
場合によったら、こういう方法もありかと思います。
AppActivate "電卓"
こちらでは、元のコードは成功はしているものの、本来は、実践では、うまく行かないことが多いようです。実は、私の作ったマクロは、ExcelとIEを行き来するものですが、だいぶ、試行錯誤を重ねてしまいました。Win32 API 自体は面倒なので、使いたくなかったこともあるのですが。
なお、Wait を入れないと、そのコードが生きているか分かりませんね。
Application.Wait Now() + TimeValue("00:00:05")
SendKeys "%{F4}", True 'ここの手前にWait を入れます。
この回答への補足
Wendyさんこんばんは。
アドバイス有り難うございます。
AppActivate ReturnValueを含めSendkey以外は正常に実行されます。
タイムウェイトでもステップインでもSendkeyのみ効かない状態で進みます。
一年前は旨くいったので、何か環境変化のせいだと思うのですが、何が影響しているのか分かりません。
Sendkeyステートメントがどんな仕組みなのか全く知らないので原因が分からないです。。
これは一度キーボードのソフトに渡されてそこから目的のアプリケーションへキーが送られているんでしょうか。それともVBAから直接にアプリケーションに送られているんでしょうか。
キーボードドライバやIMEが関係してくるなら、今MS-IMEは削除しATOKにているのでその影響かも知れないです。全くのシロウト考えですが。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 複数のcsvファイルをExcelに一括変換したい 2 2023/03/03 12:44
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) VBA 特定の列に入っているテキストをコピペ 2 2023/06/14 11:24
- Excel(エクセル) フォルダ内の全ブックのシート名を変更したい 7 2022/09/22 21:34
このQ&Aを見た人はこんなQ&Aも見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
【お題】 ・ありそうだけど、絶対に無いことわざを教えてください。
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
我が家のお雑煮スタイル、教えて下さい
我が家のお雑煮スタイル、教えて下さい! (お汁)味噌汁系? すまし汁系? (お餅)角餅? 丸餅? / プレーンなお餅? あんこ餅?
-
【sendkeysメソッドが動かずに苦慮しております】
Visual Basic(VBA)
-
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
エクセルVBAで SendKeys {TAB}""
Excel(エクセル)
-
-
4
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
5
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
6
エクセル VBA SendKeys ループ処理について
Excel(エクセル)
-
7
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
8
SendKeysの使い方について
Visual Basic(VBA)
-
9
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
10
ExcelVBAでセルを編集状態にする方法
Excel(エクセル)
-
11
vba で illustrator に sendkey ^a" を送っても効かない"
Visual Basic(VBA)
-
12
ExcelマクロのSendkeysで処理途中に次のキーが送られる
Excel(エクセル)
-
13
sendkeysにてALT+CTRL+INSERTを同時に行いたい
Visual Basic(VBA)
-
14
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
15
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
16
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
17
エクセルの印刷ダイアログをSendkeysで操作したい。
PowerPoint(パワーポイント)
-
18
VBAで CTRL+HOMEの位置へ移動したい。
Excel(エクセル)
-
19
SendKeysを使いたい。
Visual Basic(VBA)
-
20
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ゲームの画面を常にアクティヴ...
-
パソコンキーボードのエンター...
-
VBAで、なぜかSendkeyが効きま...
-
キーを長押しするツールを探し...
-
フリーウェアのアナログ時計ソ...
-
カーソルを2つにして同じ動き...
-
1秒毎にキーの←を押すソフト
-
範囲を指定してスクショを撮れ...
-
タイマーで自動的にキーを押す...
-
同じファイルを連番などでひた...
-
特殊なマウスマクロ
-
マウスの操作を逆にしたい
-
画面キャプチャをベクター画像...
-
自動でenterを連打するソフトが...
-
A4サイズのPDFデータを2枚合わ...
-
星の王子様のフランス語タイト...
-
動画の再生プレイヤーについて...
-
窓の杜やフリーソフト100は安全...
-
あるWEBサイトを階層構造ごと、...
-
確定申告書類PDF→xtx
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ゲームの画面を常にアクティヴ...
-
パソコンキーボードのエンター...
-
VBAで、なぜかSendkeyが効きま...
-
キーを長押しするツールを探し...
-
タイマーで自動的にキーを押す...
-
範囲を指定してスクショを撮れ...
-
自動でenterを連打するソフトが...
-
昔のあのお絵かきソフトの名前...
-
画面キャプチャのフリーソフト...
-
カーソルを2つにして同じ動き...
-
マウスのクリックをキーボード...
-
同じファイルを連番などでひた...
-
スクロールキャプチャ、成功し...
-
マウス 動作反転ソフトはあり...
-
特殊なマウスマクロ
-
画面キャプチャをベクター画像...
-
30分おきにクリックすつソフト...
-
イラストレーターのレイヤーパ...
-
文字列をコピーできないものを...
-
ネット上の地図をPCに画像と...
おすすめ情報