【问题标题】:Debug doesn't work with library references - Errormsg "Cant enter break mode at this time"调试不适用于库引用 - 错误消息“此时无法进入中断模式”
【发布时间】:2020-08-14 21:02:27
【问题描述】:

我在 Excel VBA 中编写了一个宏,让用户通过电子邮件将他们的 Excel 文件自动发送回给我。 要使用此宏,每个用户都必须安装 Outlook 库。为此,我创建了函数 add_outlook。 如果我尝试运行该功能,它会起作用。 发生的唯一问题是 VBA 不允许我调试。 单步执行代码时出现错误消息“此时无法进入中断模式”

有解决方法或修复方法吗?

非常感谢!

Option Explicit
Public Function add_outlook()


'DEBUGGING DOESNT WORK
'late binding
Dim vbProj As Object
Set vbProj = ThisWorkbook.VBProject
Dim vbRefs As Object
Set vbRefs = vbProj.References
Dim vbRef As Object

'Libary GUID and Data
Dim libname As String
libname = "Outlook"
Dim guid As String
Dim major As Long
Dim minor As Long
Dim exists As Boolean
guid = "{00062FFF-0000-0000-C000-000000000046}"
major = 9
minor = 6


'Reference cleanup function
For Each vbRef In vbRefs
    If vbRef.Name = libname Then

'problem occurs here
        vbRefs.Remove Reference:=vbRef
    End If
Next

'add Ref
vbRefs.AddFromGuid guid:=guid, major:=major, minor:=minor
End Function

【问题讨论】:

  • 在无法调试的部分之后设置断点并从那里[再次]执行。
  • 引用与宏工作簿一起存储,因此您无需执行此操作。如果您必须担心不同版本的 Outlook,请使用后期绑定。
  • @PaulOgilvie 设置断点并没有阻止错误的发生。错误恢复下一个也不起作用。
  • @Rory 是的,我使用了后期绑定。代码就像我说的那样工作。我还是很好奇,为什么调试的时候会报错
  • 您无法单步执行更改 VBA 项目的代码(例如,如果您尝试单步执行将 activex 控件添加到工作表的代码,则会遇到相同的错误)。仅供参考,我的意思是后期绑定您的代码,因此您根本不需要 Outlook 引用,而不是后期绑定代码以添加引用。

标签: excel vba


【解决方案1】:

解决方案:

Sub Workbook_Open()
    Call add_outlook
End Sub
  • 无法单步执行代码
  • 触发 Workbook_open 事件时获取参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    相关资源
    最近更新 更多