如何用此代码修复编译错误?

时间:2019-05-30 23:12:26

标签: excel vba

这是本教程的链接 https://wellsr.com/vba/2018/excel/excel-vba-send-email-with-attachment/

Sub AttachMultipleFilesToEmail()
Dim outlookApp As Outlook.Application
Dim myMail As Outlook.MailItem

Set outlookApp = New Outlook.Application
Set myMail = outlookApp.CreateItem(olMailItem)

For i = 2 To 5
  source_file = "C:\Work Files\" & Cells(i, 3)
  myMail.Attachments.Add source_file
Next i
End Sub

Where the error occurs

The error code

这是我正在尝试做的大事。 Got this image from https://wellsr.com/vba/2018/excel/excel-vba-send-email-with-attachment/,但是文件和目录存在并且正确。可能是什么问题?

2 个答案:

答案 0 :(得分:0)

猜测,我想您没有对Outlook dll的引用。

尝试在VBA编辑器中单击“工具”菜单,然后选择“引用...”。

然后向下滚动列表,直到找到Microsoft Outlook XX Object Library,然后选择它。 XX只是版本号。

对于以后的问题,请始终告诉我们错误发生的代码行以及确切的错误消息。否则,我们只是在猜测。

关于您的修订问题:

我运行了您的代码,它运行正常。但是,我确实确保将带有文件名的工作表作为活动工作表,否则您将得到错误。

我建议您使用数据明确引用工作表,而不是仅使用Cells(i,3),因为这是使用活动工作表的捷径。

这是一种实现方法:

Sub AttachMultipleFilesToEmail()
    Dim outlookApp As Outlook.Application
    Dim myMail As Outlook.MailItem
    Dim sheet As Worksheet 'declare an object to point to the sheet with the data

    Set outlookApp = New Outlook.Application
    Set myMail = outlookApp.CreateItem(olMailItem)
    Set sheet = Worksheets("Sheet1") 'set the object to the correct sheet

    For i = 1 To 2
        source_file = "C:\Work Files\" & sheet.Cells(i, 3) 'use the sheet object to ensure the correct cells are used.
        myMail.Attachments.Add source_file
    Next i
End Sub

答案 1 :(得分:0)

您可能需要添加参考(工具->参考)并将“ ThisWorbook”更改为“ ActiveWorkoob”。如果您在“个人”模块中运行宏,那么ThisWorkbook将无法正常工作。

enter image description here