Windows7でExcel VBAのスクリーンキーボードが起動しない

このQ&Aのポイント
  • Windows XP ホームエディション,Excel2010で作成したファイルでスクリーンキーボードを起動していたが、Windows7 プロフェッショナルに変えたところ起動しなくなった。
  • Shell関数の呼び出しで「プロシージャーの呼び出し、または引数が不正です」とエラーが出ている。
  • 解決策を本やネットで調べたが分からなかった。
回答を見る
  • ベストアンサー

Excel VBAでスクリーンキーボードを起動

Windows XP ホームエディション,Excel2010で作成したファイルでスクリーンキーボードを次のShell関数にて起動させていましたが、この度Windows7 プロフェッショナルに変えたところ「プロシージャーの呼び出し、または引数が不正です」とのことで立ち上がらなくなりました。pathnameを調べましたがWindows XP ホームエディションとWindows7ロフェッショナルは同じでした。 Sub スクリーンキーボードの表示() Shell "C:\Windows\System32\osk.exe", 1 End Sub 本やネットで解決策を調べてみましたが分かりません。どなたかお教えいただけないでしょうか。 よろしくお願いします。

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

  • ベストアンサー
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

こちらでも Shell では起動できませんでした。 createobject("shell.application").shellexecute "C:\Windows\System32\osk.exe" なら起動しました。 shell("explorer.exe C:\Windows\System32\osk.exe") でも可 なぜ、shell("C:\Windows\System32\osk.exe") だとダメなのか不明。 なお、スクリーンキーボードは最前面に固定されてしまうようなので??? 上記2例でよいのでは?

suidouyama
質問者

お礼

お礼が遅れて申し訳ありません。 教えて頂きましたとおりに作成いたしましたところ、 無事に表示されました。 大変助かりました。ありがとうございました。

関連するQ&A

  • EXCEL VBA で他のアプリケーションを開く方法について

    EXCEL VBAで他のアプリケーションを開く方法について教えていただきたいことがあります。 現在開いているエクセルのブックと同じフォルダにある、"AAA"という名称のsqc形式のファイル(EAST社のSkyLink Ver9.0のコマンドファイルです)をVBAで開く。 SHELL関数で開くと思っていたのですが、 Sub Test() Dim MyPath As String, MyTask As Double MyPath = ActiveWorkbook.Path & "\" MyTask = Shell(MyPath & "AAA.sqc") SendKeys "%FO", True End Sub とすると 「プロシージャの呼び出し、または引数が不正です」 というメッセージが出てしまいます。 如何せんSHELL関数を使うのが初めてでして、色々調べても どうしても解決策にたどり着きません。 どうぞよろしくお願いいたします。

  • スクリーンキーボードについて教えて下さい。

    Windows98でも、スクリーンキーボードが 使えると聞いたのですが、検索してもXPの 方法しか出てきません。 インターネットで中国語を入力したいのですが、 スクリーンキーボードが使えない場合、別に 何か良い方法はあるのでしょうか(中国語ソフトの インストールなど、有料以外の方法で)。 どうぞ宜しくお願いいたします。

  • スクリーンセーバーがキーボードを押しても解除されない

    当方Win XP home editionです。 PCをしばらく放置しておくとスクリーンセイバーが起動します。 このとき、マウスを動かすとスクリーンセイバーが解除されデスクトップが表示されるのですが、キーボードをいくらたたいても解除されません。 キーボードに反応してスクリーンセイバーを解除するにはどうすればよいでしょうか?

  • エクセルVBA イベントプロシージャに引数を渡せま

    お世話になります。 エクセル2003/XP 使用です。 イベントプロシージャに引数を渡せまるかどうか教えていただけますでしょうか? 下記のコード中の変数mysheetnameを ユーザーフォーム、→ CommandButton1のプロシージャに 引数として渡して行きたいのですが、 実行すると、一番最初のWorkbook_SheetBeforeRightClickの時点で、 コンパイルエラー:  プロシージャの宣言が、イベントまたはプロシージャの定義と一致していません。 とエラー表示されます。 イベントプロシージャに引数を渡すことはできますでしょうか? ---------- ThisWorkBook内 ---------- Public mysheetname As String Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean) mysheetname = ActiveSheet.Name UserForm1.Show (mysheetname)     '←変数mysheetnameの値をユーザーフォームに渡したい。 End Sub ---------- ユーザーフォーム ---------- Private Sub UserForm_Initialize(ByVal mysheetname As String ) 処理 End Sub Private Sub CommandButton1_Click(ByVal mysheetname As String ) 処理 End Sub ’--------- ここまで 引数について少し理解し始めたばかりの者です。 よろしくお願いします。

  • ソフト起動用のコマンドボタンをクリックするとエラーがでる

    Windows7 Excel2007でマクロ作成中の初心者です。 フォームにボタンを付け会計ソフトが起動しています。 Private Sub 会計ソフト起動ボタン_Click() Unload Me 会計ソフト End Sub --------------------------------------- Sub 会計ソフト() Dim ReturnValue ReturnValue = Shell("C:\Program Files\Yayoi\Kaikei5\System\Kaikei5.exe", 1) AppActivate ReturnValue'----エラー発生し黄色になる行 Call 拡大 'Range("H14").Select End Sub ------------------------------------------------- Sub 拡大() Application.WindowState = xlMaximized End Sub 以上のコードで立ち上げると「実行時エラー5 プロシージャの呼び出し または引数が不正です。」のエラーが出ないようにするにはどう変更したらよろしいでしょうか?

  • レジストリエディタを起動させて手前に表示させたい

    VBE画面から Sub test() Dim i As Long i = Shell("C:\WINDOWS\regedit.exe") End Sub を実行するとレジストリエディタを起動できるのですがアクティブ(前画面)になりません。 Sub test() Dim i As Long i = Shell("C:\WINDOWS\regedit.exe") AppActivate i End Sub これにしたも同じく全画面になりません。 ただ、一度起動した後に再度このコードを実行すると、 プロシージャの呼び出し、または引数が不正です。(Error 5) と言うエラーになりますが、1回目に開いたレジストリエディタがアクティブになります。 vbaコードで起動だけではなく、手前に表示させるにはどうすればいいですか?

  • Shell関数を使って、ファイル名を指定して開くこ

    オフィス2003です。 Sub サンプル1() Dim strExcelPath As String strExcelPath = "C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE" Shell strExcelPath, 1 End Sub なら空のエクセルアプリケーションが開けます。 でも、 Sub サンプル2() Dim strExcelPath As String strExcelPath = "D:\ファイル.xls" Shell strExcelPath, 1 End Sub だと、 “プロシージャの呼び出し、または引数が不正です。“ と言うエラーになります。 Shell関数を使って、ファイル名を指定して開くことはできないのでしょうか?

  • VB6でWSH(vbs)を起動できる方法を教えてください。

    visual Basic 6でアプリケーションを開発していますが、 このアプリケーション(exe)から、test.vbsを起動したいと考えています。 ====vbのコード===== 'ボタンクリックしたら、test.vbsが実行される Private Sub Command1_Click() shell("test.vbs") End Sub ==== test.vbs ==== MsgBox("test.vbs起動しました。") です。 上記のようにコードを書きましたが、Shell関数で 「実行時エラー'5' プロシージャの呼び出し、または引数が不正です。」 のメッセージが出力されて、vbsが起動できません。 VB6でWSH(vbs)を起動できる方法を教えてください。 環境は以下の通りです。 OS:WIN2000 アプリ:VB6 ブラウザ:IE5.0

  • 画面の大きさとスクリーンの大きさが合わない

    私のパソコンのスクリーンは17型なのですが、Windows XP Professionalをインストールしたところ、写る画面が15型の大きさです。 どうすればいいのでしょうか?どなかご存じのかたいらっしゃればおしえてください。

  • キーボードが変なんですけど・・

    東芝のダイナブックax2525cmsを使ってます。 もともとosは、XPホームエディションが入ってましたが おかしくなり、プロフェッショナルを再インストールして もらいました。 それから、キーボードがおかしくなりました。 ・shift+2で@マークがでます。 ・普通に@を押すと[マークがでます。 ・shift+8を押すと*マークがでます。 ・shift+9を押すと( マークがでます。 ・shift+0を押すと ) マークがでます。 ・/を押すと・がでます。 ・右上のBSキー横の¥を押すと、何もでません。 以前は、きちんと表示してたんですが、どうすればいい でしょうか? よろしくお願いします。

専門家に質問してみよう