ExcelのVBAで起動したOutlookのウィンドウを最大化する方法は?


仕事でExcelのVBAを活用して効率化をしようとしています。
その中でメールを送信するためにOutlookを使用する作業があります。
1.Outlookが起動しているか確認
2.Outlookが起動していなければ起動(起動していればなにもしない)
3.Outlookのウィンドウの状態を取得して最大化していなければ最大化
4.メールを作成(NamespaceやMAPIの処理は割愛)
5.メールを送信
という流れを考えています。1・2・4・5はできたのですが、3が実現できずにいます。
どのようなコードを記述すれば良いかご教示ください。
※ExcelのVBAで参照設定の項目にOutlook Object Libraryを追加済みです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2018/02/16 15:48:55
  • 終了:2018/02/23 15:50:06

回答(2件)

id:pinkymonk No.1

pinkymonk回答回数173ベストアンサー獲得回数142018/02/17 15:33:29

http://www.ken3.org/cgi-bin/group/vba_outlook.asp

にかいてある

'通常サイズ olNormalWindow=2 で表示(ほかに olMaximized=0,olMinimized=1)
oApp.ActiveWindow.WindowState = 0
とすればよいのでは?

試してません。ごめんね。

id:keijun5145

これでできなかったので質問しています。
on error resume next を使用して
for文で-100000~100000を試してみましたが通常サイズで起動されるだけでした。

2018/02/17 20:38:57
id:kimuram No.2

kimuram回答回数19ベストアンサー獲得回数72018/02/19 09:51:27

試していたら、偶然に発見(!?)したようなものですが、

まず
oApp.ActiveWindow.WindowState = 2 'olNormalWindow
を実行し、続けて
oApp.ActiveWindow.WindowState = 0 'olMaximized
を実行します。

これで最大化されたのですが、環境の違いとかあるかもしれませんが、
こちらはWindows10、Outlook2016です。

どうも起動後初期状態のウインドウ状態が最大と認識していてそこからの最大化を無視しているかのような動きに見えます。
いったん最大以外に設定してから最大化を要求するとちゃんとやってくれるようです。
勘違いとかだったらごめんなさい。
試してみてください。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません