dポイントプレゼントキャンペーン実施中!

VBAで久しぶりにSendkeyを使おうしたところ、ステップインではキーが送られません。

Excelのメニューのツール>マクロ>マクロのボックスを開き、実行ボタンを押せば旨くいきます。

ところがVBエディター上からF8を押してもセンドキーが実行されません。
VBエディターのメニューのツール>マクロから実行ボタンを押しても同じ失敗が起きます。

VBエディターの問題でしょうか?


Sub test()
Shell "Notepad.exe", 1
SendKeys "A"
SendKeys "B"
SendKeys "C"
End Sub

               Excel 2003
               WindowsXP sp2

A 回答 (1件)

SendKeys はアクティブなウィンドウに送られます。


Sub test()
Shell "Notepad.exe", 1 'ここにブレークポイント設定
SendKeys "A"
SendKeys "B"
SendKeys "C"
End Sub
だと、F8 で進めてゆくと、SendKeys "A"に進んだ段階でアクティブなのはVBEのウィンドウになりますから
Sub test()
Shell "Notepad.exe", 1 'ここにブレークポイント設定
SendKeys "A"
ASendKeys "B" ←ここに、A が来てしまいます(Win7 Excel2010では)
SendKeys "C"
End Sub

メモ帳で何をしたいのか不明ですが
テキストファイルを変更・新規作成などでしたら
VBAのOpenステートメントとか
FileSystemObjectを使うとかで対応されては?
ヘルプより抜粋
Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile("c:\testfile.txt", True)
a.WriteLine("This is a test.")
a.Close
ご参考まで。

この回答への補足

回答ありいがとうございます。
自分のエクセルでは、Sendkey"B"の前にAは出てこないです。
メモ帳に文字を送ったのは、単純化して原因を調べるためです。実際にはIEなどに送ります。

キーを送っている時アクティブなのはVBEと言われれば、確かにそうですが、実際にはF8を押しても対象ソフトにキーが送られていました。
ただ、もう5年くらいこのメソッド使ってなかったんです。
その間に何回かウィンドウズをアップデートしたので、ウイルス対策にセンドキーの制限がかかったのかな? とも思ったんですが。

補足日時:2015/01/13 23:48
    • good
    • 0
この回答へのお礼

ありがとうございました。

お礼日時:2015/01/18 22:52

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!