新生活を充実させるための「こだわり」を取材!!

いつもお世話になっております。
エクセルにて処理が終了した時点で、VBAを使い自動的にメールを送るマクロを組みました。しかし、ユーザーからのリクエストにより、自動送信する前にメール内容を確認したいとのことで、一度このメール内容でOKかどうか聞いてから、送信するように書き換えました。そのMsgBoxは当然エクセル上に現れるのですが、特にシングルディスプレイユーザーの場合、送信用のメールが前面に出てしまい、エクセル上に表示されたMsgBoxに気が付かない人もいますので、送信用メールが作成されたら、エクセルを前面に出してMsgBoxの指示に従わせたいのですが、どう書けばいいのか分かりません。とりあえず、私がトライしてみた文字ールは下記のとおりですが、エクセルは前面には出ません(ただし、エクセルプログラム全体が点滅?しますが)。
~前略~

With myMail
.To = "abc@xxxxx.com"
.Cc = "123@xxxxx.com"
.Subject = Filename '指定済みです
.Body = strBody '指定済みです
.display '.sendの代わりにいったんここで表示させました
End With

Windows("XYZ.xls").Activate 'このワークブックで作業をしてます。全面にはでてきません。

mymsg = MsgBox("このメール内容で送信してもよろしいですか?"~中略~,vbYesNo + vbQuestion, "送信確認")
If mymsg = 6 Then
myMail.send

~後略~

教えて!goo グレード

A 回答 (3件)

Windows("XYZ.xls").Activate


のところに
VBA.AppActivate Excel.Application.Caption
を追加してみてください。
    • good
    • 11
この回答へのお礼

xls88さん、
即答感謝いたします。先ほどユーザー(と言っても同僚ですが)からのOKの返事がきました。
ありがとうございます。

お礼日時:2009/01/18 14:57

こんにちは



>Windows("XYZ.xls").Activate 'このワークブックで作業をしてます。全面にはでてきません。
         ↓
通常は、AppActivate("Microsoft Excel") の引数は、Application.Caption を使います。
しかし、うまくいかないこともありますので、その場合は、このようにします。

'-----------------------------------

Private Declare Function SetForegroundWindow Lib "user32.dll" (ByVal hwnd As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Sub Test()
  Dim hwnd As Long
  Const FCLASSNAME As String = "XLMAIN"
  hwnd = FindWindow(FCLASSNAME, vbNullString)
  If hwnd > 0 Then
    SetForegroundWindow hwnd
  End If
End Sub


なお、"XLMAIN" は、Excelのクラス名
Outlook は、"rctrl_renwnd32" です。
    • good
    • 0
この回答へのお礼

Wendy02さん、
本当にいつもありがとうございます。
私にはとても思いつかない、モジュールです。。。
おっしゃる通り、Application.Captionでうまくいきました。
これでうまくいかなかったときには、上記を使わせていただきます。
システム上残念ながら、お二人に20Pを差し上げることができません。
今回は、ご回答順でPを付することにいたしますことを、ご了承ください。
ありがとうございました。

お礼日時:2009/01/18 15:00

先に確認メッセージを表示させて、OKをクリックしてから送信動作(With myMail以降)を行うようにしたら良いだけじゃないので

しょうか?
    • good
    • 1
この回答へのお礼

それはProcedure上無理なんですよ。
ありがとうございました。

お礼日時:2009/01/18 14:55

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

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

教えて!goo グレード

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

人気Q&Aランキング