1

ブート/ログオン時の Outlook 2016 の自動起動に問題があります。これは、Windows システム トレイに最小化された Outlook を起動することを目的としています。これにより、Windows 10 の起動時に呼び出されるとメールがメール アカウントによって収集されます (NB . この場合はすべての POP.) プログラムはシステム トレイに常駐し、ユーザーが要求するまで非表示のままです。

以下の .vbs スクリプトは必要に応じて機能しますが、多くの場合、2 つの望ましくない問題が発生します。

  1. システム トレイの Outlook アイコンには、「別のプログラムが Outlook を使用しています。プログラムを切断して Outlook を終了するには、Outlook アイコンをクリックし、[今すぐ終了] をクリックしてください」というメッセージとともに「歯車」オーバーレイが表示されます。

  2. [Outlook を開く] コンテキスト メニュー (トレイの Outlook アイコンを右クリック) 項目から Outlook を開こうとすると、「アクティブなエクスプローラー オブジェクトが見つかりません」というメッセージが表示されるダイアログ ボックスが表示されます。応答で [OK] オプションをクリックすると、Outlook が起動します (ただし、問題 1 - コグ オーバーレイ) は残ります。

デスクトップから Outlook を通常どおり起動した場合は、どちらの問題も発生しないため、.vbs スクリプトが原因であると思われます。過去に、このスクリプトをスタートアップ メニューのショートカットと hkcu の「実行」レジストリ エントリの両方として正常に使用しました (以下も参照してください: https://superuser.com/questions/467809/start-outlook-automatically-in-tray )。 .

正しい機能を達成するために、誰かが原因を提案したり、代わりに適切なコードリビジョンを提案したりできますか? 重要な場合、Windows 10 は 64 ビット Pro であり、インストールされている Office (Outlook を含む) のバージョンも 64 ビットです。

これは、.vbs スクリプトによって呼び出されるコードです。

オプション明示

OPTION EXPLICIT

CONST PATH_TO_OUTLOOK = """C:\Program Files\Microsoft Office\Office16\OUTLOOK.EXE"""
CONST SHOW_MAXIMIZED = 3
CONST MINIMIZE = 1

DIM shell, outlook

SET shell = WScript.CreateObject("WScript.Shell")

' Open Outlook
shell.Run PATH_TO_OUTLOOK, SHOW_MAXIMIZED, FALSE

ON ERROR RESUME NEXT

' Grab a handle to the Outlook Application and minimize 
SET outlook = WScript.CreateObject("Outlook.Application")
WScript.Sleep(100)
outlook.ActiveExplorer.WindowState = SHOW_MAXIMIZED

' Loop on error to account for slow startup in which case the
' process and/or the main Outlook window is not available
WHILE Err.Number <> 0
Err.Clear
 WScript.Sleep(100)
 SET outlook = NOTHING
 SET outlook = WScript.CreateObject("Outlook.Application")
outlook.ActiveExplorer.WindowState = MINIMIZE
WEND

ON ERROR GOTO 0

SET outlook = NOTHING
SET shell = NOTHING

週末にこの問題に何時間も費やした結果、問題を解決し、すべてが意図したとおりに機能していると思いました。

同様のコード サンプルを使用して、新しいスクリプトをコンパイルし (以下を参照)、スタートアップ フォルダーのショートカットとして、また HKCU レジストリの「実行」ブランチへのエントリとして適用しました。

さて本題!64 ビット Office スイートの一部として Outlook 2016 64 ビットがインストールされた 2 つの別々の Windows 10 Pro (どちらも 64 ビット アーキテクチャ) システムでスクリプトをテストすると、一方のシステムではスクリプトが問題なく実行され、もう一方のシステムでは次のランタイムが表示されることがわかりました。エラー:

スクリプト: D:\Neil's Files\Neil's Filing Cabinet\Neil's Emails\Start Outlook Minimized to Tray\Start Outlook 2016 Minimized To Tray.vbs

行: 11 文字: 5 エラー: ActiveX コンポーネントはオブジェクトを作成できません: 'GetObject' コード: 800A01AD ソース: Microsoft VBScript ランタイム エラー

以下の改訂されたスクリプトにはパス参照が含まれていないため(これらは Outlook.exe に関するコードによって直接処理されるため)、ショートカットの配置またはレジストリ文字列のデータ要素としてのいずれかの形式が使用されます。

ただし、システムにはいくつかの違いがあります。比較のために、ここで関連性があると思われるものを要約します。

システム 1: (問題のシステム) は X58 Asus P6T7、Intel i720 成熟した PC で、多くのプログラムがインストールされています。具体的には、Outlook 2016 には同じ 12 個のアドインがインストールされていますが、さらに起動時に起動する 2 つの関連プログラム、4team のエンタープライズ エディションがあります。 Sync2 for Microsoft Outlook および安全な PST バックアップ。さまざまなアドインを使用した Outlook スタートアップと同様に、起動時間はかなり長くなります (許容範囲内です)。

システム 2: 現在の世代の Asus X99-Deluxe、i7 5930 の新しいビルドの PC で、MS Office、Adobe CC、およびいくつかのユーティリティを保存して、まだほとんどインストールされていません。

システム 1 の場合、Outlook は意図したとおりに自動起動しますが、スプラッシュ画面のロード中 (アドインのロード中) に実行時エラーが表示されますが、Outlook は引き続き完全に開きますが、最小化に失敗します.....

これは、障害のあるコードがウィンドウをアクティブにするセクションであることを示唆していますが、上記のエラーメッセージは「ActiveX コンポーネントはオブジェクトを作成できません: 'GetObject'」を参照しており、代わりにコード行「Set OLObj = GetObject( "","Outlook.Application")"??

うまくいけば、誰かが同様のセットアップでコードをテストし、レポートを返すことができますか? または、何が起こっているのか、どうすれば解決できるのかを教えてください。もちろん、提案されたコードの改善も歓迎します!

** クイック アップデート ** HP Elitebook 8440P ラップトップでテスト済み - Office 64 ビット + 同じ 12 個の Outlook アドオンを搭載した Windows 10 Pro 64 ビット - 意図したとおりに機能します.....

** さらなる更新 ** 2 台目の HP Elitebook 8440P ラップトップでテスト - Office 64 ビット + 同じ 12 個の Outlook アドオンを搭載した Windows 10 Pro 64 ビット - 上記のランタイム エラーが再び発生しました.......なぜこれらの結果が発生?? 誰か考えはありますか???

以下のコードは、同じ Outlook 自動開始条件を求めている他のユーザーのために、「現状のまま」提供されています。システム 2 でのテストは、それが機能することを示しているので、未解決の問題が解決されるまで、他の人が同様の成功を収めることを願っています。

注: Outlook 起動ウィンドウのサイズ (自動最小化の前の 10 秒間の一時停止中) を調整して、個人の好みを反映するには、次のコード行の数値を変更します。

WshShell.Run "OUTLOOK.EXE"、3、false

ウィンドウ サイズを最大化するには、値を 3 に変更します ウィンドウ サイズを元に戻すには、値を 2 に変更します

OPTION EXPLICIT

Dim WshShell
Dim OLObj 
Set WshShell = WScript.  CreateObject ( "Wscript.Shell" ) 
'Open Outlook: Note that inspite of the launch options, it will open the program in a normal window.
'The file location path is not necessary as Windows 10 correctly identifies Outlook's location.
WshShell.Run "OUTLOOK.EXE" , 3, false 
'This will mimimise it to the system tray after a 10 second pause to allow for mail collection on Outlook launch.
WScript.Sleep (10000)
Set OLObj = GetObject("","Outlook.Application")
'Activates the window
OLObj.ActiveExplorer.Activate
'Sends the command to minimise
OLObj.ActiveExplorer.WindowState = 1
'Outlook does not immediately minimise to the system tray so that 'Send/Receive' can initiate mail collection.

Microsoft の "The Scripting Guys" フォーラムの jrv に感謝します。彼は親切にも以下の改訂 (簡略化) コードを提供してくれました。元のコードと同じように、以前と同じ 2 つのシステムで問題なく動作し、他の 2 つのシステムでもう一度エラーが発生したことを報告できます...非常に困惑しています!!

実行時エラー:

スクリプト: D:\Neil's Files\Neil's Filing Cabinet\Neil's Emails\Start Outlook Minimized to Tray\Start Outlook 2016 Minimized To Tray.vbs

行: 3 文字: 5 エラー: ActiveX コンポーネントはオブジェクトを作成できません: 'Outlook.Application' コード: 800A01AD ソース: Microsoft VBScript ランタイム エラー

改訂されたコード:

Set WshShell = CreateObject ( "Wscript.Shell" ) 
WshShell.Run "OUTLOOK.EXE" , 3, False
Set ol = CreateObject("Outlook.Application")
ol.ActiveExplorer.Activate
ol.ActiveExplorer.WindowState = 1
4

3 に答える 3