- ベストアンサー
ACCESS97 VBA のSendKeys
以前Windows2000ProやWindowsXP Pro ACCESS97のVBAでShell関数を利用し 別のソフトを起動 その後Timerイベントで SendKeysを実行し別のソフトを操作していました。 しかし最近購入したパソコン(WindowsXP Pro)で 実行したところ別のソフトは起動しますが Sendkeysの操作が実行されません。 なぜでしょうか? 以前のパソコンと最近購入したパソコンの違いは 以前のパソコンは購入時SP1で Windows UPdateでSP2にしたこと セキュリティーソフト(Nortonを使用しています)の バージョンが異なるぐらいです。 ( もちろん起動する別のソフトは、許可にしています) Sendkeysの操作が実行されるようにする 設定を教えてください。 よろしくお願いします。
- life0305
- お礼率13% (11/79)
- Visual Basic
- 回答数2
- ありがとう数3
- みんなの回答 (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
その他の回答 (1)
- teto_pun2
- ベストアンサー率41% (12/29)
良くありそうな話ですが、SendKeysはアクティブなWindowにキーを送ります。 従って、SendKeysを送るタイミングが悪く、アクティブなWindowでない場合に送っていないか確認してください。 または、API関数のSetActiveWindow 等で、アクティブにしてからSendkeysを行っては?
補足
回答ありがとうございます。 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が有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。
- ベストアンサー
- Visual Basic
- 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ビットです。
- ベストアンサー
- Visual Basic
- イベントビューアの操作をしたい
Windows2000ProSP2でVB6SP5を使用しています。 イベントビューアを起動し、「セキュリティログ」を選択して、「操作(A)」-「ログファイルの名前を付けて保存(A)」、それで名前を付けてCSV形式で保存したいのです。 Shell関数でeventvwr.exeを実行して起動した後、Sendkeysでキー操作をすればいいのかと思ったのですが、 できません。 Shell関数の後でイベントビューアが完全に起動するまで待つ必要があるのではないかと思っています。 実現するには、どのようにすればよいのでしょうか? だめ↓ Shell "eventvwr", vbNormalFocus SendKeys "{DOWN}", Wait SendKeys "{DOWN}", Wait SendKeys "%(a)", Wait
- 締切済み
- Visual Basic
- 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
- ベストアンサー
- Excel(エクセル)
- VBA EXCELの並び替え機能
WindowsXP Pro 32bit - Office2003 Pro SP3 の組合せの エクセルにVBAで、「Application.SendKeys ("%ds")」と記入し ボタンを押すと「並び替え」のダイヤログが表示されるように作成しました。 今回、同プログラムを Windows7 Pro 32bit - Office2003 Pro SP3 の組合せにて 使用したところ、無反応となりました。 どんな原因が考えられるでしょうか? 宜しくお願いします。
- ベストアンサー
- Visual Basic
- 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 ================================================
- 締切済み
- Windows 7
- 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
- ベストアンサー
- Visual Basic
- 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%で、その他のアプリケーションが目に見えて起動しているような雰囲気はない。
- ベストアンサー
- Windows系OS
お礼
回答ありがとうございました。 実際にテストしてみたところ うまくできました。 ありがとうございました。