如何将来自同一工作簿的不同 Excel sheet 中的 PDF 附加到 Outlook 邮件?

How attach PDF, where location in different Excel sheet from same workbook, to Outlook mail?

我正在尝试将共享驱动器中的 PDF 附加到许多由 Excel 中的 VBA 代码生成的 Outlook 电子邮件中。

一个 sheet 拥有将创建电子邮件的所有电子邮件地址。

同一工作簿中的另一个 sheet 具有主题行、电子邮件正文和 PDF 位置等输入内容,可以根据群发电子邮件的内容进行更改。

虽然制作电子邮件主题和 html 正文的代码有效,但附件代码无效。

将 PDF 地址复制到活动作品中的一个单元格sheet 加上电子邮件数据行,我可以附加 PDF。

当我将其视为输入工作sheet的输入时,问题就出现了。

Sub Email_New_Patent_Case()

    Dim i As Integer
    Dim AttorneyCount As Long

    'Set the end of the range equal to the last row of attorney data in the sheet
    AttorneyCount = WorksheetFunction.CountA(Range("B2:B10"))

    For i = 1 To AttorneyCount
        If ActiveSheet.Cells(i + 1, 16) > 0 Then
            Dim objOutlook As Object
            Set objOutlook = CreateObject("Outlook.Application")

            Dim objEmail As Object
            Set objEmail = objOutlook.CreateItem(olMailItem)

            With objEmail
                .To = ActiveSheet.Cells(i + 1, 10).Value
                .CC = ""

                'Make sure this cell corresponds with the Subject Line
                .Subject = ActiveWorkbook.Worksheets("Inputs").Range("D3")

                'Make sure nickname has nickname or first name as value
                .HTMLBody = ActiveSheet.Cells(i + 1, 4).Value & ",<br><br>"

                'Make sure this cell corresponds with the Body
                .HTMLBody = .HTMLBody & ActiveWorkbook.Worksheets("Inputs").Range("D4") 

                'Make sure this cell corresponds with
                ' the desired attachment location on the shared drive
                .Attachments.Add ActiveWorkbook.Worksheets("Inputs").Range("D5") 

                .Save
            End With
        End If
    Next i

End Sub

我收到一条错误消息:

"Object doesn't support this property or method."

I am trying to attach a PDF from a shared drive to many Outlook emails

.Attachments.Add ActiveWorkbook.Worksheets("Inputs").Range("D5") 'Make sure this cell corresponds with the desired attachment location on the shared drive

附件的来源可以是文件(由带文件名的完整文件系统路径表示)或构成附件的 Outlook 项目。

因此,您需要先将文件复制到硬盘上,然后通过本地文件路径附加它们。

这个有点含糊:

.Attachments.Add ActiveWorkbook.Worksheets("Inputs").Range("D5")

...因为 Attachments.Add 可以采用 表示完整文件路径的字符串 实际对象。在这种情况下 Add 无法判断您是在尝试添加单元格本身还是它的值 - 似乎默认尝试添加范围对象而不是读取单元格的默认值 属性 ( Value)

更明确地解决了问题:

.Attachments.Add ActiveWorkbook.Worksheets("Inputs").Range("D5").Value