質問

QNo.3424376 Excelを閉じたらスクリーンキーボードも閉じるには
質問者:qq4w2299 Excelでスクリーンキーボードより文字入力していますが
Excelを閉じてもスクリーンキーボードはWinXPに付属している為、閉じないのですがExcelを閉じたらスクリーンキーボードも閉じるようにするにはどのように設定したら閉じますでしょうか?
困り度:
  • すぐに回答を!
質問投稿日時:
07/10/13 00:18
この質問に対する回答は締め切られました。

回答

ANo.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記事に載っています。
本当はこれも入れないといけないが、質問者の補足のレベルでは、ゆっくり勉強してからやってください。
回答者:imogasi
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/10/13 23:27
この回答へのお礼書込み有難う御座いました。
イベントプロの中に直接入れる為
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右上の[×]で閉じたらスクリーン キーボードが閉じるようにしたいのですがどう記述したら良いでしょうか?

回答良回答20pt

ANo.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ガあったから簡単なコードでできそうですが。
コンピュター関連では、素人でも簡単に思いつく課題が、解決には、大変な勉強が必要なものが多いですよ。
回答者:imogasi
種類:アドバイス
どんな人:一般人
自信:参考意見
回答日時:
07/10/13 09:34
この回答へのお礼書込み有難う御座いました。
今、内容はよく理解できていないのですが、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