通过Outlook VBA从Excel附件中查找最后一行

通过Outlook VBA从Excel附件中查找最后一行,vba,excel,outlook,Vba,Excel,Outlook,我一直在寻找这个问题的答案,但似乎找不到答案。我正在尝试合并作为电子邮件附件接收的多个基于Excel的列表。仅提供一点背景信息,这个宏已经运行了近两年,没有出现错误,但我最近将它从运行Excel2007和Outlook 2010的系统切换到了运行Excel2007和Outlook 2007的系统 下面这行给了我一个1004:应用程序定义或对象定义的错误: LR=xlAtt.ActiveSheet.Range(“A”&xlAtt.ActiveSheet.Rows.Count)。End(xlUp)。

我一直在寻找这个问题的答案,但似乎找不到答案。我正在尝试合并作为电子邮件附件接收的多个基于Excel的列表。仅提供一点背景信息,这个宏已经运行了近两年,没有出现错误,但我最近将它从运行Excel2007和Outlook 2010的系统切换到了运行Excel2007和Outlook 2007的系统

下面这行给了我一个
1004:应用程序定义或对象定义的错误

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
以上只是代码的一个片段,希望能提供足够的上下文

我已经尝试过测试每一条给我一个错误的行,并且我已经能够将它缩小到行的
.End(xlUp).Row
部分


非常感谢您的帮助。

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

如果您使用
xlUp
枚举
-4162
,它会工作吗?我很困惑为什么它会停止工作,因为您仍然在使用XL2007并在代码中将其绑定到XL。如果枚举不起作用,您正在打开的附件是否发生了变化,返回的
ActiveSheet
可能与您预期的不同?Scott,请将此信息放入答案中,以便我可以接受。使用枚举成功了!谢谢。我怀疑Outlook的前一个版本引用了Excel库,但新版本没有。打开Outlook VB编辑器,单击
工具
,然后单击
引用
。在顶部附近应该有“MicrosoftExcelNN.0对象库”,左侧有一个勾选框。“nn.0”的值取决于版本。如果不在顶部,向下滚动到此库并勾选它。所有Excel常量现在都可用。@TonyDallimore所有引用都正确勾选。我相信Outlook 2007根本无法在我的系统上正确解释Excel常量。我发现这很难相信。Excel库与Outlook 2003完美配合。我没有Office 2007的副本要测试,但我不相信Excel/Outlook现在还没有修复。您的意思是将Excel 2007与Outlook 2010一起使用。您是否用Outlook加载了正确的Excel库?