質問: shell(path) call appactivate(taskid) end sub を実行しても、アクティブ(前面表示)されません。 シートにコマンドボタンを設置して、 private sub commandbutton1_click() test end sub としても、エクセルの後ろ側に開いてしまいます。 http://note.phyllo.net/?eid=1106208 のサイトを参考にしました。 vb6のサイトを見てるから駄目なのでしょうか? エクセルでやりたいです。
回答: こんにちは。 最初に、こちらの話ですが、 > http://note.phyllo.net/?eid=1106208 >のサイトを参考にしました。 >vb6のサイトを見てるから駄目なのでしょうか? はっきりと用語は思い出せないので不正確な言葉ですが、うまく行かない理由として、vb6の場合は、formがあって、そのformの構造と、excelのwindowの構造とは仕組みが違うので、appactivateが上手くいかない、というような説明だったと思います。 それで、notepad.exeを前面に出すという、excelのコードではいくつかあるのですが、以下が定番というか古典的のようですね。一応、notepad.exeは、パスが通っているものとしています。今どきは、こういうコードはあまり書かないかもしれません。 '// private declare function findwindow lib "user32" alias "findwindowa" (byval lpclassname as string, byval lpwindowname as string) as long private declare function setforegroundwindow lib "user32.dll" (byval hwnd as long) as long sub notepad_foreground() dim hwnd as long shell "notepad.exe", vbnormalnofocus hwnd = findwindow("notepad", vbnullstring) setforegroundwindow hwnd end sub