• 締切済み

Access→Excelを起動した際の挙動について

Access2000VBAの件で質問です。 このたび、OSをXPからVistaにVerUpしまして、AccessVBAからExcelブックをオープンした際に、Excelの挙動に異変が… 具体的には (1)XP :エクセルが最前面に起ち上がる (2)Vista:エクセルがタスクバーに最小化した状態で起ち上がる(で、オレンジ色に点滅する) と、OSによって挙動が違うのですが、なんとかXP側の挙動に合わせたいです。 実現する方法は無いでしょうか? 注意事項としては以下のとおりです。 ・レジストリは変更できない ・Excel側にマクロを仕込んでもOK 要件としては、起動したエクセルがタスクバーに最小化されずに、デスクトップの最前面に表示されればOKです。 皆様のアイディアをお待ちしております。 よろしくお願いします。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.2

フォアグラウンドウィンドウ(ForegroundWindow)に関する仕様だと 思います。メニュー選択や文字の入力中に、勝手にウィンドウが 切り替えられてしまい、作業中の処理が中断してしまうことを防ぐ ためかと。 Win2000あたりからたびたび問題として出てくることがあり、 OS によって微妙に挙動が違う話は聞きます。 API の ShowWindow SetForeGroundWindow SetWindowPos あたりをキーワードにして調べてみて下さい。

yuki-alpha
質問者

お礼

情報のご提供ありがとうございます。 Shell "excel [ワークブックのパス]", vbMaximizedFocus で解決してしまいました。

回答No.1

起動した後にAppActivate関数を使用してみてはどうでしょうか? 引数はウィンドウタイトルですので、起動したエクセルオブジェクトのcaptionを指定するようにして。

yuki-alpha
質問者

補足

ご回答ありがとうございます。MSDNにてAppActivate関数を調べてみましたが、この関数では、ウィンドウの状態は変化せず、要件を満たせないのではないでしょうか? <MSDN抜粋> AppActivate 関数は、指定したアプリケーションやウィンドウにフォーカスを移します。このとき、フォーカスが移っても、指定したウィンドウの状態は変化しません。たとえば、最小化されているウィンドウにフォーカスを移しても、そのウィンドウは最小化されたままです。 せっかく回答していただいて申し訳ありませんが、引き続き、ご回答お待ちしております。

関連するQ&A