Ошибка во время выполнения при прикреплении вложения PDF-файла в Outlook

#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 и т.д.)