SendKeysを使いたい。XP-Excel2003でSendKeysが実行されない

このQ&Aのポイント
  • Microsoft Bisual Basicのヘルプに記述してある次の構文のうち、SendKeysが実行されません。F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。参照設定の何かにチェックがついていないのだと思います。その何かを、または別の方法をお教え願います。
  • SendKeysを使っているプログラムで、Microsoft Bisual Basicのヘルプに記述してあるSendKeysの構文を使っていますが、実行されません。F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。参照設定の何かにチェックがついていないのだと思います。その何かを、または別の方法を教えてください。
  • SendKeysを使いたいプログラムで、Microsoft Bisual Basicのヘルプに書かれた構文を使っていますが、うまくいきません。F8キーにて、順次実行は出来るのですが、SendKeysが有効になりません。参照設定の何かにチェックがついていないのだと思います。その何かを、または別の方法を教えてください。
回答を見る
  • ベストアンサー

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が有効になりません。 参照設定の何かにチェックがついていないのだと思います。 その何かを、または別の方法をお教え願います。

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

  • ベストアンサー
回答No.1

たぶん早すぎるのだと思います。 Sub test() Dim ReturnValue As Long, I As Integer ReturnValue = Shell("CALC.EXE", 1) Application.Wait Now + TimeSerial(0, 0, 3) AppActivate ReturnValue For I = 1 To 20 SendKeys I & "{+}", True Next I SendKeys "=", True SendKeys "%{F4}", True End Sub ではどうでしょうか

YON56
質問者

お礼

ありがとうございました。 F8キーにて、命令を1行づつ実行すると、SendKeysが有効に作用しませんでした。 はじめから、「SendKeys "%{F4}", True」の直前までを一気に実行させるとSendKeysが有効に作用しました。 F8キーを使うとアクティブなアプリケーションがExcelのままだから実行出来ないのでは? と考える次第です。 ヘルプのマクロも実行可能でした。 「たぶん早すぎるのだと思います。」の一言に心より感謝致します。

関連するQ&A

  • VBAで、なぜかSendkeyが効きません。

    一年くらい前に作った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

  • エクセルVBAで開いている他のアプリにデータ転記

    Sub TEST_Sendkey01() は、エクセルVBAでメモ帳を立ち上げ、データを転記するコードです。 期待通りに作動します。 http://okwave.jp/qa6760498.html Sub TEST_Sendkey01()   Dim App As String, tmp As String   Dim Ret, myAr   Dim i As Long, n As Long   App = "notepad.exe"   MsgBox App & "を実行します"   Ret = Shell(App, vbNormalFocus)   If Ret Then     AppActivate Ret, True   Else     MsgBox "失敗しました。"     Exit Sub   End If   myAr = Split("ABC101,BBB202,CCC303", ",")   For n = 1 To 2     For i = 0 To UBound(myAr)       SendKeys myAr(i)       SendKeys "{TAB}"       Application.Wait Time:=Now + TimeValue("00:00:01")     Next i     SendKeys "{ENTER}"   Next n   AppActivate Application.Name, False   MsgBox "終了しました。"   AppActivate Ret End Sub 質問は、あらたにメモ帳を立ち上げるのではなく、すでに開いている既存のメモ帳(TESTNOTE.txt)のデータに追加でデータを転記する方法です。 下記のようにしてみましたが、  AppActivate "TESTNOTEtxt - メモ帳" の段階で「実行時エラー5 プロシージャの呼び出し、または引数が不正です」となってしまいます。 どのように記述すればよいのでしょうか? Sub TEST_Sendkey02()   Dim myAr   Dim i As Long, n As Long   AppActivate "TESTNOTEtxt - メモ帳"      myAr = Split("D11,E22,F33", ",")   For n = 1 To 2     For i = 0 To UBound(myAr)       SendKeys myAr(i)       SendKeys "{TAB}"       Application.Wait Time:=Now + TimeValue("00:00:01")     Next i     SendKeys "{ENTER}"   Next n   AppActivate Application.Name, False   MsgBox "終了しました。"   AppActivate "TESTNOTEtxt - メモ帳" End Sub

  • GetWindowText、GetActiveWindowについて

    こんばんは。よろしくお願いします。 まずは以下をご覧ください。 Excel VBA です。 Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Sub Sample() Dim rtn, rtn2 As Long Dim Name As String Dim Leng As Long Dim ReturnValue ReturnValue = Shell("CALC.EXE", 1) AppActivate ReturnValue Sleep 500 Name = String(250, Chr(0)) Leng = Len(Name) rtn = GetActiveWindow() rtn2 = GetWindowText(rtn, Name, Leng) Debug.Print Name End Sub これを実行しても、イミディエイトウインドウに「電卓」は出ません。 エラーもありません。 なぜなのでしょうか?

  • 実行中のSendkeysのVBSを途中で停止したい

    下記のような実行中のSendkeysのVBSを途中で 停止するにはどうすればよいのでしょうか? Set s = WScript.CreateObject("WScript.Shell") for i=1 to 100 s.SendKeys i WScript.Sleep 500 next ご存知の方がおられましたらご回答をよろしくお願いします。

  • SendKeys "^V", True(貼り付け)のミス

    エクセルシートに設定したリアルタイム関数(楽天マーケットスピード)でデータを取得し、フィルターをかけてメモパッドに表示しています。   エクセルでクリップボードに格納したものを下記のプログラムで[Ctrl]+[V]キーを転送しています。 問題は[Ctrl]+[V]キーがしばしば他のアプリケーションのカーソルに転送されてしまいメモパッドがパスされてしまいます。 AppActivateが効かないのか分かりませんが対策を是非ご教示下さい。 Sub NotePad書き出し() Dim myPath As String dim y as long If nsw <> 0 Then GoTo 即貼り付け'メモ帳起動は一度だけ nsw = 1 myPath = ActiveWorkbook.Path & "\" 'メモ帳を起動する myID = Shell("Notepad.exe", vbNormalFocus) For y = 1 To 3000 'notePadが開く余裕を3秒間取る DoEvents Sleep 1 Next y 即貼り付け: '[ENTER]キーを転送して1行空ける SendKeys "{ENTER}", True 'メモ帳をアクティブにする AppActivate myID '[Ctrl]+[V]キーを転送してコピーした内容を貼り付ける SendKeys "^V", True 'コピーモードを解除する Application.CutCopyMode = False End Sub

  • 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ビットです。

  • エクセルVBAで他のアプリにデータ転記後の質問です

    以下は、エクセルVBAでメモ帳を立ち上げ、データを転記するコードです。 一応、作動します。 ところが、データ転記後、手動でエクセルシートに触らないと、あるいはメモ帳を終了しないと、MsgBox "終了しました。" がでてこないのです。 ノートパッドを終了させず、またエクセルをクリックしなくとも終了メッセージが出るようにするにはどうしたらよいのでしょうか? Thisworkbook.activateを入れてみてもだめでした。 Sub TEST_Sendkey()   Dim App As String, tmp As String   Dim Ret, myAr   Dim i As Long, n As Long   tmp = ActiveSheet.Name   App = "notepad.exe"      MsgBox App & "を実行します"   Ret = Shell(App, vbNormalFocus)   AppActivate Ret, True   myAr = Split("A11,B22,C33", ",")   For n = 1 To 5     For i = 0 To UBound(myAr)       SendKeys myAr(i)       SendKeys "{TAB}"       Application.Wait Time:=Now + TimeValue("00:00:01")     Next i     SendKeys "{ENTER}"   Next n   MsgBox "終了しました。"   Exit Sub End Sub よろしくお願いいたします。 (o。_。)oペコッ

  • 画像を開いてアクティブにしたい

    Sub マクロ1() Dim MyFileFullName As String MyFileFullName = "C:\Users\名刺.jpg" Shell "Rundll32.exe" & " Shimgvw.dll,ImageView_Fullscreen" & " " & MyFileFullName End Sub を実行すると、アプリケーションの裏側に開いてしまうのですが、 表側にする方法はありますか? Sub マクロ1() Dim MyFileFullName As String Dim i As Long MyFileFullName = "C:\Users\名刺.jpg" i =Shell "Rundll32.exe" & " Shimgvw.dll,ImageView_Fullscreen" & " " & MyFileFullName AppActivate i End Sub こうしようとすると、構文エラーになります。

  • 【sendkeysメソッドが動かずに苦慮しております】

    【sendkeysメソッドが動かずに苦慮しております】 OS:2000 Excel:2003 VB:6.5 こんにちは。 sendkeysメソッドが動かずに苦慮しております。 ネットでいろいろ調べてみましたが、やはり正常に動かすのは難しい様です。 実際、何をしたいのかと言うとプリンターの出力時の設定を変更したいと思っております。 会社のプリンターですが方針でデフォルトが「両面」「2分割」で設定されております。 ただ複数ファイルの跨ったプレゼン資料などを大量に出力する際は「片面」「分割なし」 で設定を変更してプリントアウトしたいと思っており、いろいろ調べた結果Sendkeysを 使うことにいたしました。 ただ、先に申し上げた通りsendkeysメソッドが動かず悩んでおります。 素人の不躾けなご質問で大変申し訳ありませんが、解決できる方法をご存知の方ご教授ください。 sendkeysメソッドを使わない方法でも問題ありません。 以下、ダイアログを表示させ、タブを移動させるまでのコードです。 それではどうぞよろしくお願いいたします。 Sub AAA() Dim FOS As FileSystemObject Dim FolderC As Folder Dim FilesC As Files Dim FileC As File Dim FileName, Path_Name As String Set FOS = CreateObject("scripting.filesystemobject") Set FolderC = FOS.GetFolder("C:\Documents and Settings\AAAAA\デスクトップ\TEST") Set FilesC = FolderC.Files Path_Name = "C:\Documents and Settings\AAAAA\デスクトップ\TEST\" For Each FileC In FilesC FileName = FileC.Name Workbooks.Open FileName:=Path_Name & FileName ActiveWorkbook.Worksheets(1).Select With Application .SendKeys "^{P}", True .SendKeys "%r", True .SendKeys "^{tab}", True .SendKeys "{tab 3}", True End With ActiveWorkbook.Close False Next Set FOS = Nothing End Sub

  • Excel vbs AppActivate エラー

    Sub TeraPad_SF() 'Keyboard Shortcut: Ctrl+Shift+Q Dim RetVal As Integer Dim sA As String Dim sP As String Dim sV As String Dim sTxt As String sV = ActiveCell.Value sTxt = Left(sV, 1) & ".txt" '開くファイル名 sA = "D:\WebCamRegistor\txtFolder\" & sTxt '実行するプログラムのパス sP = "C:\Program Files\TeraPad\TeraPad.exe " RetVal = Shell(sP & sA, 1) If RetVal = 0 Then MsgBox "起動に失敗しました" AppActivate RetVal SendKeys "%SF" & sV, True End Sub '現在セルの値でAdobeReaderでxx.pdfを検索する Sub AdobeReader_SF() 'Keyboard Shortcut: Ctrl+Shift+Q Dim RetVal Dim sA As String Dim sP As String Dim sV As String Dim sTxt As String sV = ActiveCell.Value sTxt = Left(sV, 1) & ".pdf" '開くファイル名 sA = "D:\WebCamRegistor\pdfFolder\" & sTxt '実行するプログラムのパス sP = "C:\Program Files\Adobe\Reader 10.0\Reader\AcroRd32.exe " RetVal = Shell(sP & sA, 1) If RetVal = 0 Then MsgBox "起動に失敗しました" Application.Wait Now + TimeSerial(0, 0, 2) AppActivate RetVal SendKeys "^F", True End Sub Excel VBA で上は正常に動作しますが、下はAppActivate RetValでエラーとなります。修正の方法をお教えください。

専門家に質問してみよう