Как исправить ошибку компиляции с этим кодом? - PullRequest
0 голосов
/ 31 мая 2019

Это ссылка на учебник 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

Где происходит ошибка

Код ошибки

Это большая картина того, что я пытаюсь сделать. Получил это изображение из https://wellsr.com/vba/2018/excel/excel-vba-send-email-with-attachment/, но файлы и каталог существуют и исправлены. В чем может быть проблема?

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Может потребоваться добавить ссылку (Инструменты -> Справка) и изменить «ThisWorbook» на «ActiveWorkoob».ThisWorkbook не будет работать, если вы запустите макрос из своего персонального модуля.

enter image description here

0 голосов
/ 31 мая 2019

В предположении я бы сказал, что у вас нет ссылки на 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...