2017-03-27 13 views
1

JavaScriptとWindows Scripting Hostを使用してOutlookアイテムを操作しています。vba/wshで現在アクティブなOutlookストアを調べるvbs

Outlookで2つのExchangeプロファイルが設定されているため、スクリプトが機能しないというユーザーの指摘があるまで、これは簡単です。

スクリプトは2番目のプロファイルにありますが、アクセスすると、 Outlookカテゴリのマスターリストで、これは標準プロファイルから読み込まれます。

答えは簡単です。私はちょうど正しいOutlook store objectに対処する必要があります。私のスクリプトは、どのストアが現在アクティブなOutlook Explorerでアクセスされているかを判断する必要があり、これに対してネイティブ関数を見つけることができませんでした。 outlook application objectvar ol = new ActiveXObject("Outlook.Application")考える

、私はネイティブに簡単に店舗がアクセスされてol.[ActiveExplorer()][4];しかし、セッションオブジェクトを呼び出すことによって、現在アクティブなOutlookのエクスプローラを決定することができ、同等の機能を提供していません。

function ActiveStore(olApplication) { 
    var ActiveExplorerCaption=olApplication.ActiveExplorer().Caption; 
    for (var storeCounter=1; storeCounter<=olApplication.Session.Stores.Count; storeCounter++) { 
     var storeDisplayName=olApplication.Session.Stores.Item(storeCounter).DisplayName; 
     if (ActiveExplorerCaption.indexOf(storeDisplayName)!=-1) return olApplication.Session.Stores.Item(storeCounter); 
    } 
    return "undefined"; 
}; 

var ol = new ActiveXObject("Outlook.Application"); 
WScript.Echo("The Outlook store currently active in an explorer is called "+ActiveStore(ol).DisplayName); 

は私が店だから、display names

ol.Session.Stores.Item(counter).DisplayName // "[email protected]" 

私が働いていないコードをループでexplorer's caption

ol.ActiveExplorer().Caption // "Inbox - [email protected] - Outlook" 

を比較することで、回避策を作ってみました

しかし、私は疑問に思っています:

  • は、このコードは常に、すなわち、この変数は、常にこのように設定されているか、単に私が
  • で動作することができますインストールであり、現在アクティブな店舗を決定するためのより良い方法ではありませんが、動作しますか?
+0

JavaScriptを使用しているときにVisual Basicでタグ付けしたのはなぜですか?私は明らかにvba(Script)のソリューションに対応しています。これはOutlookでよく使用されるものです。 Outlook vbaの内部で動作するソリューションがある場合は、おそらくそれをwsh jscriptに適合させることができます。 – mheim

答えて

3

ActiveExplorerを持っているので、Explorer.CurrentFolder、したがってFolder.StoreIDも持っています。次に、そのStoreID値を使用してNamespace.GetStoreFromIDを使用します。

+0

ありがとう、これはちょうど私が行方不明だったリンクです。ただし、[Folder.StoreID](https://msdn.microsoft)ではなく[Folder.Store](https://msdn.microsoft.com/en-us/library/office/ff863350.aspx)を使用しています。 .com/en-us/library/office/ff867495.aspx)。 質問から1ライナーへの縮約された私の機能: 'Function ActiveStore(olApplication){return olApplication.ActiveExplorer()。CurrentFolder.Store; } ' – mheim

関連する問題