在 vba / wsh vbs 中确定当前活动的 Outlook 存储
Determine currently active Outlook store in vba / wsh vbs
我正在使用 JavaScript 和 Windows 脚本宿主来处理 Outlook 项目。
这已经很简单了,直到我们的一位用户指出该脚本不起作用,因为他在 Outlook 中配置了两个 Exchange 配置文件。
脚本应该处理的那个在第二个配置文件中,但是如果我访问,例如Outlook 类别主列表,这是从标准配置文件加载的。
答案很简单,我只需要解决正确的问题 Outlook store object. My script needs to determine, which store is being accessed in the currently active Outlook Explorer,我找不到相应的本机函数。
给定 outlook application object var ol = new ActiveXObject( "Outlook.Application" )
,我可以通过简单地调用 ol.[ActiveExplorer()][4];
本机确定当前活动的 Outlook 资源管理器,但是访问存储的会话对象不提供等效函数。
我想出了一个解决方法,通过比较 explorer's caption
ol.ActiveExplorer().Caption // "Inbox - email@address.com - Outlook"
循环遍历商店' display names
ol.Session.Stores.Item(counter).DisplayName // "email@address.com"
所以我有工作代码:
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);
但是,我想知道:
- 此代码是否始终有效,即此变量是否始终以这种方式设置,或者仅在我可以使用的安装中设置
- 没有更好的方法来确定当前活跃的商店吗?
既然你有 ActiveExplorer,你也有 Explorer.CurrentFolder,因此 Folder.StoreID。然后使用 Namespace.GetStoreFromID 使用该 StoreID 值。
我正在使用 JavaScript 和 Windows 脚本宿主来处理 Outlook 项目。
这已经很简单了,直到我们的一位用户指出该脚本不起作用,因为他在 Outlook 中配置了两个 Exchange 配置文件。
脚本应该处理的那个在第二个配置文件中,但是如果我访问,例如Outlook 类别主列表,这是从标准配置文件加载的。
答案很简单,我只需要解决正确的问题 Outlook store object. My script needs to determine, which store is being accessed in the currently active Outlook Explorer,我找不到相应的本机函数。
给定 outlook application object var ol = new ActiveXObject( "Outlook.Application" )
,我可以通过简单地调用 ol.[ActiveExplorer()][4];
本机确定当前活动的 Outlook 资源管理器,但是访问存储的会话对象不提供等效函数。
我想出了一个解决方法,通过比较 explorer's caption
ol.ActiveExplorer().Caption // "Inbox - email@address.com - Outlook"
循环遍历商店' display names
ol.Session.Stores.Item(counter).DisplayName // "email@address.com"
所以我有工作代码:
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);
但是,我想知道:
- 此代码是否始终有效,即此变量是否始终以这种方式设置,或者仅在我可以使用的安装中设置
- 没有更好的方法来确定当前活跃的商店吗?
既然你有 ActiveExplorer,你也有 Explorer.CurrentFolder,因此 Folder.StoreID。然后使用 Namespace.GetStoreFromID 使用该 StoreID 值。