0

だから私は書いているvbaマクロでウィンドウ/アプリを閉じることを試しています。オンラインの多数の投稿でFindWindow、Windows API からの使用が提案されています。

マクロからメモ帳ウィンドウを閉じようとしています。(私が欲しいものの1つですが、それが最も簡単なようです)そして解決策を見つけました。それがどこに投稿されたか忘れました。それは短くて甘かったです。

Sub CheckNotepad()
Dim hwnd As Long
hwnd = FindWindow("Notepad", vbNullString)
If hwnd Then
    MsgBox "Notepad is running, the window handle is " & hwnd
Else
    MsgBox "Notepad is not running"
End If
End Sub

メモ帳ウィンドウのハンドルを取得する方法の始まりです。そこから、そのハンドルを使用してウィンドウを閉じるコードを見つけることができました。しかし、それは私にはうまくいきません!

私が見つけた例はすべて 2 つの引数を使用しています。そのうちの半分はvbNullString2 番目の引数として使用され、そのうちのいくつかは特定のウィンドウのキャプションに文字列を使用しています。しかし、どれも私にはうまくいきません。

機能する唯一の方法は、2 番目の引数に 0 を指定することです (これは の代わりにあると思います) が、 や実際の文字列vbNullStringを使用しようとすると、型の不一致エラーが発生します。vbnullstring他の番号を使用しようとすると、Excel が機能しなくなります。(素敵な「プログラムが動作を停止しました」というメッセージが表示されます。

では、なぜこのようなことが起こるのかについてアドバイスをいただけないでしょうか。0 を使用することもできますが、ユーザーが他のメモ帳ウィンドウを開いていると推測されるため、特定のメモ帳ウィンドウを見つけるための引数を指定できるようにしたいと考えています。(一時ウィンドウになり、マクロ中にポップアップし、その後、開いたままにしたくないので閉じます)

前もって感謝します

4

2 に答える 2