【问题标题】:Excel VBA: Stops Working at Outlook Email Creation SubroutineExcel VBA:在 Outlook 电子邮件创建子例程处停止工作
【发布时间】:2015-01-30 16:46:53
【问题描述】:

前几天我问了这个问题,并认为我找到了答案,但现在 Excel 继续进入它的“无响应”模式。我的问题是该程序在某些计算机上运行良好,但在其他计算机上运行良好。

背景: 该程序在用户填写 Excel 表单并单击提交后运行。程序验证数据,操作数据,通过 Outlook 创建电子邮件,最后保存并关闭文档。

该程序可以在许多同事的工作计算机上运行。我们都在 Windows 7、Office 2013 上运行,但我们中的一些人使用不同的笔记本电脑(HP、Dell 等)

这是对子例程的调用,这是 excel 开始“不响应”的代码行 - 仅供参考,这不是调试停止:

Call EmailApprovalP1(GeneralSection, ItemSection, VendorSection, MarketSection, Part1Section, wbLog, wbPCD, resubmission)

这里是被调用子程序的开始:

Public Sub EmailApprovalP1(ByRef GeneralSection As Object, ByRef ItemSection As Object, ByRef VendorSection As Object, ByRef MarketSection As Object, ByRef Part1Section As Object, ByRef wbLog As Workbook, ByRef wbPCD As Workbook, ByRef resubmission As Boolean)

'Declare In Memory
Dim i As Integer
Dim toEmail As String
Dim subject As String
Dim body As String
Dim OL As New Outlook.Application
Dim olMail As Outlook.MailItem
Set olMail = OL.CreateItem(olMailItem)    

如果我停止Call EmailApprovalP1() 上的代码然后按 F8,Excel 将停止响应。有没有人对可能导致这种情况的原因有任何想法?

2-3-15 更新

适用于所有计算机的代码

Dim OL As Object
Set OL = CreateObject("Outlook.Application")
Dim olMail As Object
Set olMail = OL.CreateItem(olMailItem)

【问题讨论】:

  • 如果EmailApprovalP1 例程,您能否添加更多代码。你传递了这么多Objects,这似乎很奇怪。它们是真的Objects 还是从你的命名方式来看,它们看起来更像是别的东西,也许是Ranges...?
  • 范围是一个对象:)。 OP 已声明该宏在某些计算机上有效,而在其他计算机上则失败。

标签: vba excel outlook subroutine


【解决方案1】:

使用CreateObject 代替New。已知New 会导致一些不稳定问题。

Dim OL As Outlook.Application
Set OL = CreateObject("Outlook.Application")

【讨论】:

    【解决方案2】:

    首先,确保在运行代码之前添加了对 Outlook 的引用。您需要在必须运行代码的每台 PC 上执行此操作。 How to automate Outlook from another program 文章介绍了从其他应用程序自动化 Outlook 所需的所有步骤。

    如果没有帮助,请尝试单步执行 (F8) 函数并找到导致问题的确切代码行。

    【讨论】:

      【解决方案3】:

      在内存中声明为 Object 而不是 Outlook.Application 会有所不同。感谢@Eugene 和@Jeanno 为我指明正确的方向!

      下面是有效的代码:

      Dim OL As Object
      Set OL = CreateObject("Outlook.Application")
      Dim olMail As Object
      Set olMail = OL.CreateItem(olMailItem)
      

      【讨论】:

        猜你喜欢
        • 2018-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-12
        • 1970-01-01
        • 2016-02-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多