【问题标题】:Finding the LastRow from Excel Attachment via Outlook VBA通过 Outlook VBA 从 Excel 附件中查找 LastRow
【发布时间】: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 库?

标签: vba excel outlook


【解决方案1】:

Outlook 2007 不能识别 Excel 常量,而 OL 2010 可以。

不要写xlUp,而是写xlUp的枚举,即-4162

所以你的代码应该是这样的:

LR = xlAtt.ActiveSheet.Range("A" & xlAtt.ActiveSheet.Rows.Count).End(-4162).Row

要在 Excel VBA 中查找任何常量的任何枚举,在 VBE 中后,按F2 打开对象浏览器并在双筒望远镜旁边的框中键入常量,然后单击双筒望远镜。点击搜索结果中的常量,底部的框会显示枚举。

或者,您可以为枚举设置一个常量变量,并在您的语法中仍然使用xlUp

Constant xlUp = -4162

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    相关资源
    最近更新 更多