
一年くらい前に作った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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【sendkeysメソッドが動かずに苦慮しております】
Visual Basic(VBA)
-
VBAでの SendKeysの変数指定方法
Excel(エクセル)
-
エクセルVBAで SendKeys {TAB}""
Excel(エクセル)
-
-
4
ExcelVBAでスペースキー操作したい
Excel(エクセル)
-
5
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
6
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
7
エクセル VBA SendKeys ループ処理について
Excel(エクセル)
-
8
ExcelマクロのSendkeysで処理途中に次のキーが送られる
Excel(エクセル)
-
9
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
10
sendkeysにてALT+CTRL+INSERTを同時に行いたい
Visual Basic(VBA)
-
11
SendKeysの使い方について
Visual Basic(VBA)
-
12
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
-
13
VBAでメモ帳にコピペをしたいのですが…
PowerPoint(パワーポイント)
-
14
vba で illustrator に sendkey ^a" を送っても効かない"
Visual Basic(VBA)
-
15
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
16
Enterキーでマクロを起動さす。
その他(ソフトウェア)
-
17
vba クリップボードクリアについて教えてください
その他(プログラミング・Web制作)
-
18
Application.ScreenUpdating = Falseが効きません
Visual Basic(VBA)
-
19
ExcelVBA メモ帳を起動し名前を付けて指定フォルダに保存
Visual Basic(VBA)
-
20
VBSでのSendKeysでの画面の最小化
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パソコンキーボードのエンター...
-
VBAで、なぜかSendkeyが効きま...
-
ゲームの画面を常にアクティヴ...
-
カーソルを2つにして同じ動き...
-
画像を丸く切り抜きたい(フリ...
-
画面キャプチャをベクター画像...
-
バーコード読み込み機能
-
タイマーで自動的にキーを押す...
-
キーを長押しするツールを探し...
-
画面キャプチャのフリーソフト...
-
ダブルクリックにするフリーソフト
-
この画面の正体を教えて下さい
-
範囲を指定してスクショを撮れ...
-
クリップボード履歴ソフトをご...
-
A4サイズのPDFデータを2枚合わ...
-
PDFファイル内の文章の文字が重...
-
窓の杜やフリーソフト100は安全...
-
デーヴァナーガリー風英字フォ...
-
あるWEBサイトを階層構造ごと、...
-
タイトルブレーンでインデック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで、なぜかSendkeyが効きま...
-
ゲームの画面を常にアクティヴ...
-
パソコンキーボードのエンター...
-
タイマーで自動的にキーを押す...
-
キーを長押しするツールを探し...
-
同じファイルを連番などでひた...
-
画面キャプチャをベクター画像...
-
範囲を指定してスクショを撮れ...
-
続ジョイパッド設定
-
Photoshop に代わるソフトはあ...
-
カーソルを2つにして同じ動き...
-
画面メモのソフト?を探しています
-
PowerPointのスライドにHPの...
-
フルスクリーン画面をキャプチ...
-
予定を画面上及びアラームで知...
-
昔のあのお絵かきソフトの名前...
-
マウス 動作反転ソフトはあり...
-
この画面の正体を教えて下さい
-
スクロールキャプチャ、成功し...
-
Dos&telnet
おすすめ情報