检测 Outlook/回收状态并运行 Outlook 的多个实例

2024-01-09

有没有办法使用代码来检测 Outlook 是否会自动获取现有 Outlook 实例而不是启动新的 Outlook 实例? (最好是 VBA 代码。)理想情况下,还可以通过编程方式打开/关闭此行为。

这里的目标是针对一组 Outlook 帐户中的数据同时运行多个进程,因为某些 Outlook 进程可能需要很长时间。然后,持续时间较长的进程可以继续使用一个实例,而其他持续时间较短的进程则在另一个实例中启动和完成。当然,需要注意确保进程使用正确的 Outlook 实例,并且一个实例所做的更改不会影响另一个实例的行为。

默认情况下,启动 Outlook 2013 或 2010 时,它们会自动以确保仅运行一个 Outlook 实例的状态启动。即使您使用如下所示的 VBA 代码也是如此:
Set appOl = CreateObject(Class:="Outlook.Application")

根据类似的帖子http://amal.net/?p=2190 http://amal.net/?p=2190(2009)和http://www.nextofwindows.com/opening-multiple-instances-of-outlook-on-windows http://www.nextofwindows.com/opening-multiple-instances-of-outlook-on-windows(不确定日期)此行为是通过在安装 Outlook 时创建的默认 Outlook 启动快捷方式中使用 /recycle 开关来指定的。删除开关应该可以防止该行为并允许创建 Outlook 的多个实例。但是,Outlook 2010(在 Vista64 主机上)和 Outlook 2013(在 Windows 10 主机上)的安装都表现得好像存在 /recycle 开关,即使它们的 Outlook 启动快捷方式do not 包含任何 /recycle 参数。

给定一种检测并希望更改 Outlook 行为方式的方法,这样的代码可用于在启动长时间运行的进程时创建额外的 Outlook 实例,并在其完成时退出新的 Outlook 实例:

'       Detect whether a New Outlook instance can be created &
'         set the value of NewOutlookInstanceIsPossible to True/False
    If NewOutlookInstanceIsPossible Then
        Set appOl  = VBA.CreateObject(Class:="Outlook.application") 'New instance
    End If
'   ....     Code that does something using AppOl
    If NewOutlookInstanceIsPossible Then appOl.Quit                 'Quit new instance`

Outlook 是一个单例。每个登录用户始终只运行一个实例。另请记住,对 Outlook 对象模型的所有调用都会编组到主 Outlook 线程,因此多线程实际上是不可能的。

要运行多个线程/进程,您需要使用扩展 MAPI(C++ 或 Delphi),它是一组单独加载到每个进程中的 dll。您还可以使用CDO 1.21 https://support.microsoft.com/en-us/kb/171440(Microsoft 不再支持)或赎回 http://www.dimastr.com/redemption/(我是它的作者 - 使用它的RDO http://www.dimastr.com/redemption/rdo_introduction.htm对象族) - 它们都是扩展 MAPi 之上的包装器,并且可以在多个线程/进程中使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检测 Outlook/回收状态并运行 Outlook 的多个实例 的相关文章

  • 如何刷新幻灯片放映中的活动幻灯片?

    基于我的最后一个问题 https stackoverflow com questions 14503054 change the image of an image shape我得到了正确的代码来更改形状的图像 不幸的是 这不会更新活动演示
  • Python:使用 python 运行 Excel 宏

    我需要通过 python 运行 Excel 宏 但总是收到以下错误 result self oleobj InvokeTypes dispid LCID wFlags retType argTypes args pywintypes com
  • Outlook Application_NewMailEx 在启动时不工作

    我正在使用一个Application NewMailEx处理收到的所有电子邮件 它适用于 Outlook 打开时收到的电子邮件 然而在启动时 Application NewMailEx不会因收到的电子邮件而被呼叫 我尝试使用Applicat
  • VBA仅清除数据透视表缓存,但保留数据透视表结构

    如何使用VBA清除数据透视表缓存 但不破坏数据透视表结构 我的数据透视表已连接到外部数据源 SQL 源决定哪个用户应该查看数据的哪一部分 当表刷新时 源会填充该表 我想保存 Excel 文件并使用干净的数据透视表 内部没有数据 分发它 结果
  • 列表框:添加组合框作为项目?

    是否可以将列表框的每个项目都作为组合框 我需要这个 因为我将列表框设置为可检查 然后我需要让用户从列表中每个元素的不同选项中进行选择 Thanks 如果您不打算分发您的应用程序 那么您还可以查看 TreeView 控件 请参阅此示例 COD
  • 将 copyfromrecordset 写入范围

    我有以下 vba 它从单元格 C10 开始读取 MCO 直到其为空 并将从 SQL 数据库获取机器数量 解密和升级机器数量 这工作正常 但我在获取相应行中的数据时遇到问题 目前它总是将数据写入 D10 因为我已经对其进行了硬编码 但我不确定
  • Excel 宏与 Javascript

    我希望使用 Javascript 中的宏而不是默认的 VBA 来操作 Excel 电子表格 我可以使用以下 VBA 代码执行 javascript 代码 javascript to execute Dim b As String b fun
  • 由于直接引用范围而不是通过中间变量而导致 Excel VBA 运行时错误 450

    当我尝试直接引用某个范围内的值时 出现运行时错误 450 但如果我使用中间变量 它就会起作用 我不明白为什么 所以我担心在将来的某个时候我会再次遇到错误而不知道为什么 我尝试过使用 With End With 块 但当我直接引用范围时它仍然
  • 标准 VBA 函数“找不到项目或库”

    因此 我必须在我的 PC 上运行别人的 Excel 应用程序 并且在标准函数 如日期 格式 十六进制 中间等 上收到 找不到项目或库 的信息 一些研究表明 如果我在这些函数前加上 VBA 前缀 如 VBA Date 中那样 它会正常工作 网
  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 我需要代码在两行之间复制并粘贴到另一张表中,并给出任何值?

    例如 我有 50 行数据 第一行有学生的名字 我需要代码将数据从 RAM 复制到 RAMESH 在这之间我有 20 行 我需要代码来复制行并将其粘贴到另一张纸中 它不应该问我名字 默认情况下 它必须采用 RAM 和 RAMESH 名称 好的
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • 将表行从 Word 文档复制到现有文档表特定单元格

    我正在寻找一个宏 它将内容从一个 Word 文档中的表格复制到另一个现有 Word 文档中的表格到特定单元格中 从第 5 行开始 复制后面的所有行并将其粘贴到现有文档中的第 5 行 这可能吗 在此输入图像描述 https i stack i
  • Excel VBA 导出到文本文件。需要删除空行

    我有一个工作簿 使用以下脚本将其导出到文本文件 它工作正常 但是当我打开文本文件时 末尾总是有一个空行 这导致我在生成此文本文件后运行的另一个脚本出现问题 有关如何从导出中删除空行的任何帮助 Code Sub Rectangle1 Clic
  • 如何在不滚动的情况下截取整个电子邮件正文?

    我正在使用 OL2010 想要制作整个电子邮件的屏幕截图 不仅仅是 屏幕 可以用VBA或者外部程序来完成吗 有一个类似的问题 https stackoverflow com questions 4176340关于如何使用 C 实现这一点 注
  • 如何使用 VBA 将 mm/dd/yyyy 更改为 dd/mm/yyyy

    我在使用 VBA 将 mm dd yyyy 转换为 dd mm yyyy 日期格式时遇到问题 我有一个这样的表 仅供参考 该表是从报告工具自动生成的 字符串操作 或任何 Excel 函数可以提供帮助吗 希望知道如何解决这个问题的人可以给我一
  • Excel VBA 过滤和复制粘贴数据

    给定一个数据集 假设有 10 列 在 A 列中我有日期 在 B 列中我有 我想仅过滤 A 列 2014 年的数据 B 列 ActiveSheet Range A 1 AR 1617 AutoFilter Field 5 Operator x
  • VBA根据单元格的值是否为零显示/隐藏行

    我有一个 Excel 工作表 我想根据另一个单元格中的值隐藏或取消隐藏某些行 简而言之 整个事情应该取决于单元格中的值C2 D2 E2 If C2 is blank我想rows 31 to 40被隐藏 如果是的话不为空 他们需要是visib
  • Outlook COM 插件已安装但未在 Outlook 中加载

    我已经使用 Visual Studio 2010 创建了一个 Outlook 插件 它安装得很好 并按照我的指定在程序文件 x86 中创建了适当的注册表项和文件夹 并且它显示在 添加和删除程序 中 但是 当我启动 Outlook 2010
  • 如何将 .env 添加到 codeigniter?

    我尝试按照以下步骤使 php 连接到 Outlookhttps learn microsoft com en us outlook rest php tutorial https learn microsoft com en us outl

随机推荐