トップ回答者
windowsVistaのOSでExcelが画面の裏に隠れる

質問
-
http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm
こちらの既存ファイルを開くのソースをWindowsVista上で実行するとExcelがフォームの裏に隠れてしまいます。
WindowsXpなどではフォームの前に表示されます。
Vistaでもフォームの前に表示する方法はあるのでしょうか。
a-
回答
-
Excelが前面にでましたが、常に最前面に表示されてしまいます。
おっと、そういえば TOPMOST にしてしまうと常に最前面に出てしまいますね。
TopMost以外の方法がないのなら、こちらの方法を使いたいと思います。試したわけではないですが、AppActivate 関数を使うというのはどうでしょうか。AppActivate 関数引数は、Application オブジェクトの Caption とかを指定するのかな。- 回答の候補に設定 AzuleanMVP, Moderator 2010年2月12日 11:14
- 回答としてマーク 高橋 春樹 2010年2月15日 5:41
-
Excelがすでに起動しているばあい、フォアグラウンドウィンドウをとれる条件に当てはまらないはずなので、Visible = trueで前に来ない、と言うことのはずです。自分のフォームがForegroundにあるなら、SetForegoundWindow APIを使用すれば、Excelをアクティブに出きます。#ただし、この場合、Excelでの処理が終わったあとで、自分のフォームをフォアグラウンドに戻せない可能性がありますけど。
<System.Runtime.InteropServices.DllImport("user32.dll")> _ Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean End Function xlApp.Visible = True call SetForegroundWindow(xlApp.hWnd)
jzkey- 回答としてマーク 高橋 春樹 2010年2月15日 5:42
すべての返信
-
Excelがすでに起動しているばあい、フォアグラウンドウィンドウをとれる条件に当てはまらないはずなので、Visible = trueで前に来ない、と言うことのはずです。自分のフォームがForegroundにあるなら、SetForegoundWindow APIを使用すれば、Excelをアクティブに出きます。#ただし、この場合、Excelでの処理が終わったあとで、自分のフォームをフォアグラウンドに戻せない可能性がありますけど。
<System.Runtime.InteropServices.DllImport("user32.dll")> _ Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean End Function xlApp.Visible = True call SetForegroundWindow(xlApp.hWnd)
jzkey- 回答としてマーク 高橋 春樹 2010年2月15日 5:42
-
Excelが前面にでましたが、常に最前面に表示されてしまいます。
おっと、そういえば TOPMOST にしてしまうと常に最前面に出てしまいますね。
TopMost以外の方法がないのなら、こちらの方法を使いたいと思います。試したわけではないですが、AppActivate 関数を使うというのはどうでしょうか。AppActivate 関数引数は、Application オブジェクトの Caption とかを指定するのかな。- 回答の候補に設定 AzuleanMVP, Moderator 2010年2月12日 11:14
- 回答としてマーク 高橋 春樹 2010年2月15日 5:41