エクセルVBAから,outlookを操作して,メールを送るプロシャージャを作成してました。あれこれ
改良をしていますが,いろいろ試しても最小化してひらくことはできませんでした,まずやったのは,下記の
ように,最小化を指定してシェルから開く方法です。
Shell "outlook.exe", vbMinimizedNoFocus
これは,だめでした。outlook.exe をフルパスに変えたり,vbMinimizedNoFocus を数値に変えたりしま
したが,だめでした。
次にやったのは,開いた,outlook をアクティブにして,最小化のショートカットを,sendkey で送ること
です。copilot は,
Shell ""C:¥Program Files (x86)¥Microsoft Office¥root¥Office16¥OUTLOOK.EXE"OUTLOOK.EXE", vbNormalFocus
AppActivate "Outlook"
SendKeys "% n", True
私の環境とは,outlook までのパスが違っていたので,私の環境に書き換えましたが,だめでした。
最小化するショートカットは,{WINDOESKEY}+{↓}なので,SendKeys がだめなのかと思い,
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Const KEYEVENTF_KEYUP = &H2
Private Const VK_LWIN = &H5B
Public Sub window_saisyouka()
keybd_event VK_LWIN, 0, 0, 0
keybd_event vbKeyDown, 0, 0, 0
keybd_event VK_LWIN, 0, KEYEVENTF_KEYUP, 0
keybd_event vbKeyDown, 0, KEYEVENTF_KEYUP, 0
End Sub
のように,keybd_event のサブを作って,{WINDOESKEY}+{↓} をやってもだめでした。ま
るまる二日ほどあれこれやりましたが,やっと今日,できました。
ここのHPが参考になりました。
次のような手順です。
1 メニューの「OUTLOOK」を右クリック
2 その他→ファイルの場所を開く をクリック
3 ファイルの保存場所に行って,outlook.exe を右クリックして,ショートカットを作成
4 できたショートカットをデスクトップに移動
5 デスクトップに移動したショートカットのプロパティーを開く
6 次写真のように,起動時の状態を変更
VBAのシェルの部分をショートカットを実行するように変更。
CreateObject("WScript.Shell").Run "C:\Users\mabo-2021\Desktop\Outlook"
長い道のりでした。これで,VBAのマクロを開くときに,あらかじめOUTLOOKを最小で開いておける
ので,後の処理がスムーズに行きます。