#vba #pdf #outlook
#vba #PDF #outlook
Вопрос:
Этот код для автоматической отправки электронной почты с вложением Pdf работает на нескольких ноутбуках, но не работает на моем ноутбуке. Я использую ту же версию Excel и Windows.
Sub SendWorksheet_AsPDFAttachment_OutlookEmail()
Dim objFileSystem As Object
Dim strTempFile As String
Dim objOutlookApp As Outlook.Application
Dim objMail As Outlook.MailItem
'Specify the worksheet name
Sheets("Sheet1").Activate
Sheets("Sheet1").Range("A1:O36").Select
Set objFileSystem = CreateObject("Scripting.FileSystemObject")
strTempFile = Sheets("Sheet1").Range("B50").Value
'export the specific worksheet as PDF
Selection.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strTempFile, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
'Call SaveAsPDF_Click
'Create a new email
Dim rng As Range
'Dim imagerange As Range
Set rng = Worksheets("Email Body").Range("A3:I23").SpecialCells(xlCellTypeVisible)
'Set imagerange = Worksheets("Email Body").Range("A26:I45").SpecialCells(xlCellTypeVisible)
Set objOutlookApp = CreateObject("Outlook.Application")
Set objMail = objOutlookApp.CreateItem(olMailItem)
objMail.Subject = "Letter of Appreciation from Office of CGPD"
objMail.To = Sheets("Sheet1").Range("B49").Value
'Attach the PDF file
objMail.Attachments.Add strTempFile
objMail.HTMLBody = RangetoHTML(rng)
'objMail.Display '==>display this email
objMail.send '==>to send this email
'Delete the temp PDF file
objFileSystem.DeleteFile (strTempFile)
End Sub
Комментарии:
1. Просто для добавления ошибка возникает при отладке в приведенном ниже коде objMail. Вложения. Добавить strTempFile
2. При использовании
strTempFile = Sheets("Sheet1").Range("B50").Value
содержит ли обсуждаемая ячейка расширение ‘pdf’? Я бы попробовал выполнить поиск этого конкретного файла, где он должен быть сохранен, и посмотреть, как выглядит его настоящее имя… Это именно та, которая хранится вstrTempFile
переменной?3. =CONCATENATE(«Letter — «,’Deatils Sheet’!B2,».pdf») — это формула для B50, когда я вижу strTempFile — имя файла отображается как буква -Raja.Pdf
4. Вы видели такой недавно созданный файл? Если да, то где вы ищете? Оно сохранено в текущем каталоге, но я боюсь, что для вложения нужен полный путь. Я бы посоветовал вам полностью указать путь. Я бы попробовал
strTempFile = thisWorbook.Path amp; "" amp; Sheets("Sheet1").Range("B50").Value
. Попробуйте таким образом, пожалуйста.5. имя файла я увидел в режиме отладки, наведя указатель мыши на strTempfile.. Я не привык к кодам.. Извините, если мой язык беспокоит вас. Я попробую ваш код
Ответ №1:
Это вопрос необходимости полного пути к вложению…
Если strTempFile = Sheets("Sheet1").Range("B50").Value
путь не указан, Selection.ExportAsFixedFormat
сработает, и файл будет создан в текущем каталоге.
objMail.Attachments.Add strTempFile
требуется полный путь к файлу.
Итак, strTempFile
должно быть полное соответствие. Я имею в виду, попробуйте следующий подход:
strTempFile = thisWorbook.Path amp; "" amp; Sheets("Sheet1").Range("B50").Value
Если это сработает, вы можете найти любой другой временный путь (Temp, Documents и т.д.)