我一直在寻找这个特定问题的答案,但我似乎无法找到答案。我正在尝试将我收到的多个基于Excel的列表作为电子邮件附件进行组合。只是为了给出一点上下文,这个宏已经工作了近两年没有错误,但我最近将它从运行Excel 2007的系统切换到运行Excel 2007的系统& Outlook 2007.通过Outlook VBA从Excel附件中查找LastRow
以下行是给我一个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
以上仅仅是一个代码片段,但希望提供足够的上下文。
我试过测试每一条线给我一个错误,我已经能够缩小到该行的.End(xlUp).Row
部分。
任何帮助表示赞赏。
它的工作原理,如果你使用'xlUp'枚举'-4162',这是令人费解的我为什么它停止工作,因为你仍然在使用XL2007并在代码中将它绑定到XL。如果枚举不起作用,那么您打开的附件做了些什么改变,可能会返回一个不同于您期望的“ActiveSheet”? –
Scott,请将其置于答案中,以便我接受。使用枚举工作!谢谢。 –
我怀疑以前版本的Outlook有一个Excel库的引用,但新的没有。打开Outlook VB编辑器,点击工具,然后点击参考。在顶部附近,您应该在其左侧有一个勾号框的“Microsoft Excel nn.0 Object Library”。 “nn.0”的值取决于版本。如果它不在最上面,请向下滚动到这个文件并勾选它。所有的Excel常量现在都可用。 –