• ベストアンサー

Excelを閉じたらスクリーンキーボードも閉じるには

Excelでスクリーンキーボードより文字入力していますが Excelを閉じてもスクリーンキーボードはWinXPに付属している為、閉じないのですがExcelを閉じたらスクリーンキーボードも閉じるようにするにはどのように設定したら閉じますでしょうか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

エクセルVBAの経験ありますか。 多分操作による、どこかの設定では難しいと思います。 http://officetanaka.net/excel/vba/tips/tips61.htm を使わせてもらって エクセル標準モジュールに Sub Sample2() Dim WD Set WD = CreateObject("Word.Application") If WD.Tasks.Exists("スクリーン キーボード") Then MsgBox "スクリーン キーボードを終了" WD.Tasks("スクリーン キーボード").Close End If WD.Quit Set WD = Nothing End Sub を入れて、実行すると、終了します。 「スクリーン キーボード」の2語の間は半角スペースでした。 ファイル名を指定して実行で、osk.exeでスクリーンキーボードをhらいておいて、実行して見ました。 エクセルを閉じるときなので エクセルのThisWorkbookのBeforeCloseイベントに Private Sub Workbook_BeforeClose(Cancel As Boolean) End Sub に上記のコードを挟む Private Sub Workbook_BeforeClose(Cancel As Boolean) Sample2 End Sub こういうのが判らなければ、断念せざるをえない。 たまたまワードにTasks.Existsガあったから簡単なコードでできそうですが。 コンピュター関連では、素人でも簡単に思いつく課題が、解決には、大変な勉強が必要なものが多いですよ。

qq4w2299
質問者

お礼

書込み有難う御座いました。 今、内容はよく理解できていないのですが、ThisWorkbookにマクロを記述しています。 Private Sub Workbook_Open()     ~省略~ End Sub この下に Private Sub Workbook_BeforeClose(Cancel As Boolean) Sub Sample2() Dim WD Set WD = CreateObject("Word.Application") If WD.Tasks.Exists("スクリーン キーボード") Then MsgBox "スクリーン キーボードを終了" WD.Tasks("スクリーン キーボード").Close End If WD.Quit Set WD = Nothing End Sub とコピーさせていただいたのですがうまく動作しません。 どう記述したらよいでしょうか? Sample2 End Sub

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1です。 違います。Sub Endをネストさせるのではありません。 Sub Sample2() Dim WD Set WD = CreateObject("Word.Application") 略 Set WD = Nothing End Sub はイベントプロの中に直接入れるなら 最初の Sub Sample2() 最後の End Sub の2行だけを除きます。 ーー 独立させるなら イベントプロの外へ置いて、 Private Sub Workbook_BeforeClose(Cancel As Boolean) Sample2 End Sub で一まとまり 外に別に Sub Sample2() Dim WD Set WD = CreateObject("Word.Application") 略 Set WD = Nothing End Sub で1まとまりとして、それらを書きます。今回はコピペですが。 ーーー 上記ガうまくいったとして スクリーンキーボードを使用してないときエクセルを 閉じるとエラーになるでしょう。 開いているかどうか調べる方法は、上記WEB記事に載っています。 本当はこれも入れないといけないが、質問者の補足のレベルでは、ゆっくり勉強してからやってください。

qq4w2299
質問者

お礼

書込み有難う御座いました。 イベントプロの中に直接入れる為 Dim WD Set WD = CreateObject("Word.Application") If WD.Tasks.Exists("スクリーン キーボード") Then MsgBox "スクリーン キーボードを終了" WD.Tasks("スクリーン キーボード").Close End If WD.Quit Set WD = Nothing と記述させていただきましたが ダイアログBOXで"スクリーン キーボードを終了"が出て それをOKしないと閉じないのですが Excel右上の[×]で閉じたらスクリーン キーボードが閉じるようにしたいのですがどう記述したら良いでしょうか?

関連するQ&A