• ベストアンサー

アクティブに開きたい

XPです。 エクセルを全画面表示で開いているときに、 Sub test() Dim objsample As Object Set objsample = CreateObject("Shell.Application") 'タスクバーとスタートメニューのプロパティが表示されます。 objsample.TrayProperties Set objsample = Nothing End Sub を実行すると、 一応、タスクバーとスタートメニューのプロパティ は開かれるのですが、エクセルの裏で開かれてしまいます。 開いてなおかつ、アクティブにするにはどうすればいいでしょうか? ちなみに、win7の場合は、 上記コードを実行すると、タスクバーとスタートメニューのプロパティがアクティブで開かれました。

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

  • ベストアンサー
回答No.1

誰かが、お答えになると思いましたが、こんなに時間が経つとは思いませんでした。 一般的な回答としては、AppActivate xxxx で、xxxx にキャプション(Caption)名などを入れるのです。Captionは、ウィンドウの左上の出力している文字列です。全部入れなくても可能なはずです。しかし、成功しない場合も多くあります。 その場合は、いくつか方法があります。今までのやり方は、Win32 APIを使います。一般的には、アプリケーション・ソフトのClassname は分かりますか?普通は、VBやC++についているツールでできるのですが、フリーウェアでも出ているはずです。Gooleなどで、「クラス名を取得 ツール」とでも検索してみてください。 Classname から、FindWindowA で、ハンドル(hWnd)を取り出し、SetForegroundWindow hWnd を使い、最前面に持ってきます。 例: hWnd = FindWindow(strCLASSNAME, vbNullString) SetForegroundWindow hWnd 今後は、こういう方法は廃れるはずですが、当面はまだ使えるはずです。 まあ、Excelで、カビの生えたVBAを使っている限りは、なくならないはずです。しかし、旧態依然としたコードを書いている限りは、どんどん遅れていってしまいます。新しい勉強しないといけないようです。 それ以外の方法は、WMIとか、.Net Framework を使うはずです。MS側は、Win32 APIから、.Net Framework 側に移行させようとしているようです。

PKSBUGGO
質問者

お礼

ありがとうございました。

関連するQ&A