プロが教えるわが家の防犯対策術!

XPです。

エクセルを全画面表示で開いているときに、
Sub test()
Dim objsample As Object
Set objsample = CreateObject("Shell.Application")

'タスクバーとスタートメニューのプロパティが表示されます。
objsample.TrayProperties

Set objsample = Nothing
End Sub

を実行すると、
一応、タスクバーとスタートメニューのプロパティ
は開かれるのですが、エクセルの裏で開かれてしまいます。

開いてなおかつ、アクティブにするにはどうすればいいでしょうか?

ちなみに、win7の場合は、
上記コードを実行すると、タスクバーとスタートメニューのプロパティがアクティブで開かれました。

A 回答 (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 側に移行させようとしているようです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2012/10/20 15:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!