アプリ版:「スタンプのみでお礼する」機能のリリースについて

Sub 教えて()
Dim ExAp As Application
Dim ExBk As Workbook
Dim ExSh As Worksheet

Set ExAp = CreateObject("Excel.Application")
Set ExBk = ExAp.Workbooks.Add
Set ExSh = ExBk.Worksheets(1)
ExAp.Visible = True
ExAp.WindowState = xlMaximized

ThisWorkbook.Worksheets(1).Activate
MsgBox "前面表示させたいお!"

Set ExAp = Nothing
Set ExBk = Nothing
Set ExSh = Nothing

End Sub
これを実行するとメッセージボックスが隠れてしまいます。
どうしたらよいでしょうか?

A 回答 (4件)

自身のアプリケーションにフォーカスを持ってくる


という方法ですが、2種類、3通りの方法があります。
(1)自身のVisibleを切り替える
Application.Visible = False
Application.Visible = True
MsgBox "前面表示させたいお!"
(2)APIを使う方法
(A)WindowsAPIを定義する方法
Declare Function SetForegroundWindow Lib "USER32" _
    (ByVal Hwnd As Long) As Long
Sub 教えて()
SetForegroundWindow Application.Hwnd
MsgBox "前面表示させたいお!"
End Sub
(B)ExecuteExcel4Macroを使う方法
ExecuteExcel4Macro "CALL(""USER32""," _
    & """SetForegroundWindow"",""JJ""," _
    & Application.Hwnd & ")"
MsgBox "前面表示させたいお!"

(1)は簡単ですが、タスクバーでの自身のアイコン位置が
最後尾になってしまう弱点があります。
(2)はSetForegroundWindowで自身のアプリケーションに
フォーカスを取り戻しています。
(A)は正規のAPI定義手法を使っています。
(B)は以前のAPI呼び出しです。
    • good
    • 2

他には


':
AppActivate Application.Caption
>ThisWorkbook.Worksheets(1).Activate
などもありでしょうか。

メッセージボックスだけでいいのでしたら
CreateObject("WScript.Shell").Popup "前面表示させたいお!", , , vbSystemModal
http://msdn.microsoft.com/ja-jp/library/cc364428 …
もありかもしれません。
    • good
    • 1
この回答へのお礼

Sub 教えて()
Dim ExAp As Application
Dim ExBk As Workbook
Dim ExSh As Worksheet

Set ExAp = CreateObject("Excel.Application")
Set ExBk = ExAp.Workbooks.Add
Set ExSh = ExBk.Worksheets(1)
'ExAp.Visible = True
'ExAp.WindowState = xlMaximized

'ThisWorkbook.Worksheets(1).Activate
MsgBox "前面表示させたいお!"

ExAp.Visible = True
ExAp.WindowState = xlMaximized

Set ExAp = Nothing
Set ExBk = Nothing
Set ExSh = Nothing

End Sub

というふうにメッセージボックスをクリックしたら
エクセルが表示されるようにしたら自分のしたいことが出来ました。

お礼日時:2010/04/02 00:20

はじめまして、通りすがると申します。


これなら、どうでしょうか?

Dim ExAp As Application
Dim ExBk As Workbook
Dim ExSh As Worksheet

'Set ExAp = CreateObject("Excel.Application")
'Set ExBk = ExAp.Workbooks.Add
'Set ExSh = ExBk.Worksheets(1)
'ExAp.Visible = True
'ExAp.WindowState = xlMaximized
'上記コメントの変わりに下記2行を追加
Dim varRetval As Variant
varRetval = Shell("excel.exe", vbNormalNoFocus)

ThisWorkbook.Worksheets(1).Activate


MsgBox "前面表示させたいお!"

Set ExAp = Nothing
Set ExBk = Nothing
Set ExSh = Nothing
    • good
    • 3

下記の「MsgBoxSetForeground」を指定してみたらいかがでしょうか。



http://msdn.microsoft.com/ja-jp/library/139z2azd …

MsgBox "前面表示させたいお!", vbMsgBoxSetForeground

この回答への補足

それをやっても前面に表示されませんOrz

補足日時:2010/03/18 00:44
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A