Это ссылка на учебник 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/, но файлы и каталог существуют и верны. В чем может быть проблема?
Навскидку, я бы сказал, что у вас нет ссылки на DLL Outlook.
Попробуйте щелкнуть меню «Инструменты» в редакторе VBA и выбрать «Ссылки...».
Затем прокрутите список вниз, пока не найдете Microsoft Outlook XX Object Library
, и выберите его. ХХ — это просто номер версии.
Если у вас возникнут вопросы в будущем, всегда указывайте строку кода, в которой возникает ошибка, и точное сообщение об ошибке. В противном случае мы просто предполагаем.
Что касается вашего пересмотренного вопроса:
Я запустил ваш код, и он отлично работает. Однако я убедился, что лист с именами файлов является активным листом, иначе вы получите ошибки.
Я предлагаю вам явно ссылаться на лист с данными, а не просто использовать 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
Большое спасибо! я ценю вашу помощь
Я сделал это, но по какой-то причине моей репутации недостаточно, чтобы показать это на публике. И да, ваш комментарий - правильное решение. Еще раз спасибо.
Это то, что он сказал, когда я попытался проголосовать за ваш ответ. "Спасибо за отзыв! Голоса, отданные теми, у кого репутация менее 15, записываются, но не изменяют общедоступную оценку публикации."
Я обновил дело. Не могли бы вы помочь мне понять, почему путь к файлу является проблемой. Я почти уверен, что ввел правильный путь к файлу и файлы.
Я пересмотрел свой ответ в свете вашего отредактированного вопроса. Я думаю, это исправит вашу ошибку.