• ベストアンサー

ACCESS97 VBA のSendKeys

以前Windows2000ProやWindowsXP Pro ACCESS97のVBAでShell関数を利用し 別のソフトを起動 その後Timerイベントで SendKeysを実行し別のソフトを操作していました。 しかし最近購入したパソコン(WindowsXP Pro)で 実行したところ別のソフトは起動しますが Sendkeysの操作が実行されません。 なぜでしょうか? 以前のパソコンと最近購入したパソコンの違いは 以前のパソコンは購入時SP1で Windows UPdateでSP2にしたこと セキュリティーソフト(Nortonを使用しています)の バージョンが異なるぐらいです。 ( もちろん起動する別のソフトは、許可にしています) Sendkeysの操作が実行されるようにする 設定を教えてください。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • venzou
  • ベストアンサー率71% (311/435)
回答No.2

SendKeysの処理は、送るタイミングがデリケートで、環境によってはウェイトが必要になります。 まず、AppActivateの二番目の引数を True にして、アクティブになるまで待って下さい。 それでもうまく行かないなら、下記の様にウェイトを入れて下さい。 ウェイトは大きめにしておけば安心ですが、大きすぎるとその分、処理に時間がかかります。 ----サンプル---- Private Sub test()  Dim RtnVal    RtnVal = Shell("notepad.exe", 1)  wait 0.1  AppActivate RtnVal, True  wait 0.1  SendKeys "12345", True End Sub Private Sub wait(sec As Single)  Dim st As Single  st = Timer()  Do Until Timer() > st + sec   DoEvents  Loop End Sub

life0305
質問者

お礼

回答ありがとうございました。 実際にテストしてみたところ うまくできました。 ありがとうございました。

その他の回答 (1)

  • teto_pun2
  • ベストアンサー率41% (12/29)
回答No.1

良くありそうな話ですが、SendKeysはアクティブなWindowにキーを送ります。 従って、SendKeysを送るタイミングが悪く、アクティブなWindowでない場合に送っていないか確認してください。 または、API関数のSetActiveWindow 等で、アクティブにしてからSendkeysを行っては?

life0305
質問者

補足

回答ありがとうございます。 ACCESS97 VBAで下記のプログラムのように 実行していますので アクティブになっていると思います。 RtnVal = Shell(他のプログラム, 1) AppActivate RtnVal SendKeys ... 何か別の対処方法があれば 教えてください。 よろしくお願いします。

関連するQ&A

  • SendKeysを使いたい。

    SendKeysを使いたい。 XP-Excel2003です。 Microsoft Bisual Basicのヘルプに記述してある次の構文のうち、 SendKeysが実行されません。 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 F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。

  • VBSのSendKeysでクリックができない

    音声認識アプリケーションからvbsを実行できるのですが、ここで一度だけマウスクリックしたい状況が出てきて困っています。 Dim WSHShell As Object Set WSHShell = CreateObject("Wscript.Shell") WSHShell.AppActivate "操作したいアプリケーション名" WSHShell.SendKeys "{TAB}" 'OK WSHShell.SendKeys "{ENTER}" 'OK WSHShell.SendKeys "{CLICK LEFT, 10, 10}" 'NG TABキーやENTERキーは動作するのですが、3番目のマウスクリックがExceptionといわれエラーになってしまいます。Sendkeysでマウスクリックを送信するにはどうしたらよいのでしょうか?ネットで調べたリファレンスだと上記のような書き方で良さそうなのですが・・・ 音声認識アプリケーションはドラゴンスピーチ11Jで、OSはWin 7 ProとWin 8、どちらも64ビットです。

  • イベントビューアの操作をしたい

    Windows2000ProSP2でVB6SP5を使用しています。 イベントビューアを起動し、「セキュリティログ」を選択して、「操作(A)」-「ログファイルの名前を付けて保存(A)」、それで名前を付けてCSV形式で保存したいのです。 Shell関数でeventvwr.exeを実行して起動した後、Sendkeysでキー操作をすればいいのかと思ったのですが、 できません。 Shell関数の後でイベントビューアが完全に起動するまで待つ必要があるのではないかと思っています。 実現するには、どのようにすればよいのでしょうか? だめ↓ Shell "eventvwr", vbNormalFocus SendKeys "{DOWN}", Wait SendKeys "{DOWN}", Wait SendKeys "%(a)", Wait

  • WSH動作しない!!(WScript.SleepとSendKeys?)

    WSHが動作しなくて困っています。 動作するコードとしないコードは次のとおりです。 いずれも@ITに掲載されているサンプルコードをそのままです。 動作しないコードについても,notepadの起動まではできます。 どうやら,sleepとsendkeysが動いてくれないようです。 <正常に動作するコード> Set objShell = WScript.CreateObject("WScript.Shell") WScript.Echo "メモ帳を起動します。" objShell.Run "notepad.exe" http://www.atmarkit.co.jp/fwin2k/operation/wsh03/wsh03_02.html <動作しないコード> Set objShell = WScript.CreateObject("WScript.Shell") objShell.Run "notepad.exe" WScript.Sleep 1000 objShell.SendKeys "hello" http://www.atmarkit.co.jp/fwin2k/operation/wsh05/wsh05_04.html ■動作環境 Win XP Pro IE 6.0 ちなみに,WSHファイルに対する実行権限はあります(フルコントロールです)。 以上なのですが,何か点検するべき事項などありましたらご教示ください。

  • Sendkeyでステップイン不能?

    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

  • VBA EXCELの並び替え機能

    WindowsXP Pro 32bit - Office2003 Pro SP3 の組合せの エクセルにVBAで、「Application.SendKeys ("%ds")」と記入し ボタンを押すと「並び替え」のダイヤログが表示されるように作成しました。 今回、同プログラムを Windows7 Pro 32bit - Office2003 Pro SP3 の組合せにて 使用したところ、無反応となりました。 どんな原因が考えられるでしょうか? 宜しくお願いします。

  • Windows 7 でのWSH の挙動

    お世話になります。 msdnにある「電卓をアクティブにするサンプルを Vistaで実行すると、電卓がアクティブになり、 計算結果を吐き出しますが、 Windows7(Pro,SP1)で実行すると 最前面に電卓が出るものの アクティブになっていない上に、 複数の電卓がどんどん立ち上がってきます。 Vistaと7で、プロセス(?)の管理が 変わっているのだと思います。 7でも電卓をアクティブにするには、 どうすればいいのでしょうか? 以下コードです。 ================================================ set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" WScript.Sleep 100 WshShell.AppActivate "Calculator" WScript.Sleep 100 WshShell.SendKeys "1{+}" WScript.Sleep 500 WshShell.SendKeys "2" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 500 WshShell.SendKeys "*3" WScript.Sleep 500 WshShell.SendKeys "~" WScript.Sleep 2500 ================================================

  • VBA 特定SVRにID,PASSを投入したい

    現在 グループ外のSVRに 下記 を使ってID,PASSを投入しておりますが 成功率があまり高くありません。 この起動EXCEL を保存しますか? 等 違う画面がでてしまいます。 他に良い方法があればご教授お願いいたします。 Dim myid As Long If Application.OperatingSystem = "Windows (32-bit) NT 5.00" Then 'windows2000 myid = Shell("c:\winnt\explorer.exe", vbNormalFocus) Else myid = Shell("c:\windows\explorer.exe", vbNormalFocus) End If If myid <> 0 Then Application.Wait Now() + TimeValue("00:00:02") SendKeys "%d", True SendKeys "\\xxx.xxx.xxx.xxx", True 'IPアドレス SendKeys "{enter}", True Application.Wait Now() + TimeValue("00:00:01") SendKeys "%u", True SendKeys "xxxxxxx", True 'ID SendKeys "{enter}", True SendKeys "%p", True SendKeys "xxxxxxxx", True 'PASSWORD SendKeys "{enter}", True SendKeys "%fc", True Application.EnableEvents = True Else MsgBox "xxxSVR接続に失敗しました。" & vbCrLf & "再度実行して下さい。" End If

  • Access95が起動しません(WinXP)

    WindowsXPのPCでAccess95が起動をしようとすると 『メモリ不足』と出ます。 調べてみると、 メモリ1GBのPCではAccess95を起動出来ないと書いてありました。 AC97修正パッチが置いてあったので実行してみましたが依然状態は変わらずです。 お分かりの方はご教授願えますと大変助かります。 宜しくお願い致します。 こちらのPCのスペックは OS :WindowsXP home SP2 メモリ:1GB HDD:160GB Office:Office2003pro Access95(7.0) です。

  • XPでハードディスクのアクセス頻繁

    最近購入した、DELL Precision370にて、OS起動後何もアプリケーションを起動していない状態で、ハードディスクのアクセスランプが頻繁に点滅します。 アクセスの頻度は、1秒に1回一瞬アクセスし、数十分に1回2~3秒間ぐらいアクセスしています。 当方は、業務用画像キャプチャボードを使用して、連続して画像を取り込み処理をするソフトをこのパソコンで動作させているのですが、最近購入したパソコンが、たまに画像の取り込みエラーを起こし、どうやらこの問題と関連しているのでは無いか?と考えて調査しています。 パソコンの仕様 DELL Precision 370 CPU 3.4G メモリ 1G HDD 40G(WD製) OS WindowsXP Pro SP2 BIOS A04 以下に現状をしめします。 HDDアクセスに関係する事柄や回避方法など、何かお気づきの点などありましたら、よろしくお願いします。 1)上記パソコンが5台あり、すべてに発生しています。 2)HDDがシーゲート製でSP1のパソコンも数台あるがそちらでは発生していない。 3)問題のパソコンにSP1を再インストールしても変わらず。 4)ファイアウォール、メッセンジャー、自動更新などを無効にしても変わらず。 5)タスクマネージャで確認しても、アイドルが99%で、その他のアプリケーションが目に見えて起動しているような雰囲気はない。