【发布时间】:2015-10-23 14:07:39
【问题描述】:
我一直在寻找这个特定问题的答案,但似乎找不到。我正在尝试合并作为电子邮件附件收到的多个基于 Excel 的列表。只是为了提供一点背景信息,这个宏已经运行了将近两年没有错误,但我最近将它从运行 Excel 2007 和 Outlook 2010 的系统切换到运行 Excel 2007 和 Outlook 2007 的系统。
以下行给了我一个1004: Application-defined or object-defined error:
LR = xlAtt.ActiveSheet.Range("A" & xlAtt.ActiveSheet.Rows.Count).End(xlUp).Row
在上下文中代码是:
Private Sub ProcessAttachments(olFolder As Outlook.MAPIFolder)
Dim xlApp As Object, xlAtt As Object
Dim LR As Long
Dim olItem As Outlook.MailItem
Dim count As Integer
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = False
For count = olFolder.Items.Count To 1 Step -1
Set olItem = olFolder.Items.Item(count)
If olItem.Class = olMail And olItem.Attachments.Count > 0 Then
'Omitted a few lines here that verify if the attachment is an Excel file
'and then saves it to a folder
Set xlAtt = xlApp.Workbooks.Open("pathToFile")
xlAtt.Activate
LR = xlAtt.ActiveSheet.Range("A" & xlAtt.ActiveSheet.Rows.Count).End(xlUp).Row
'More VBA after
以上只是代码的 sn-p,但希望能提供足够的上下文。
我已经尝试测试该行的每个单独部分给我一个错误,并且我已经能够将其缩小到该行的 .End(xlUp).Row 部分。
感谢任何帮助。
【问题讨论】:
-
如果您使用
xlUp枚举-4162是否有效,我很困惑为什么它停止工作,因为您仍在使用 XL2007 并将其绑定到代码中的 XL。如果枚举不起作用,您打开的附件是否发生了变化,返回的ActiveSheet可能与您预期的不同? -
Scott,请将其放在答案中,以便我接受。使用枚举工作!谢谢。
-
我怀疑以前版本的 Outlook 引用了 Excel 库,但新版本没有。打开 Outlook VB 编辑器,单击
Tools,然后单击References。在顶部附近,您应该有“Microsoft Excel nn.0 对象库”,左侧有一个勾选框。 “nn.0”的值取决于版本。如果它不在顶部,请向下滚动到此库并勾选它。现在所有 Excel 常量都可用。 -
@TonyDallimore 引用都已正确勾选。我相信 Outlook 2007 根本无法正确解释我系统上的 Excel 常量。
-
我觉得这很难相信。 Excel 库与 Outlook 2003 完美配合。我没有要测试的 Office 2007 副本,但我不相信 Excel/Outlook 现在还没有修复。您暗示您正在使用带有 Outlook 2010 的 Excel 2007。您是否在 Outlook 中加载了正确的 Excel 库?