将具有基于单元格值的路径的文件附加到电子邮件

时间:2019-08-21 09:28:42

标签: excel vba outlook

我正在尝试从工作簿中发送包含以下代码的电子邮件。它工作正常,但是直到我尝试附加文件为止。

该文件是由另一个VBA代码创建的,并且文件名是由下面指定的单元格值定义的,但是当我尝试运行该代码时却收到调试错误,并且它不会附加。我已经使用命名路径(例如C:test\test.docx)进行了测试,并且工作正常。

如何获取基于单元格值的路径?我在测试而不是发送时将其设置为.Display

Option Explicit
Option Compare Text 'ignore case sensitivity when comparing strings

Sub SendEmail()

Dim objOutlook As Object
Dim objMail As Object
Dim OL As Outlook.Application, ES As Worksheet, r As Long, i As Long
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
Dim path As String


path = "\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences\Mobile Plant\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 13) & ").docx"



    r = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 5 To r
        With Cells(i, 7)

            If .Value <> "" And Cells(i, 5) = "Mobile Plant" Then
                With objMail
                    .To = Cells(i, 11).Value
                    .Subject = "Your " & Cells(i, 5).Value & " licence - " & Cells(i, 4).Value
                    .Body = "abc"
                    .Attachments.Add path
                    .Display

End With
End If
End With

Next i

Set objOutlook = Nothing
Set objMail = Nothing


End Sub

1 个答案:

答案 0 :(得分:0)

在定义变量i实际是什么之前,您正在文件路径上使用Cells(i,4)!也许在For Loop中移动路径?

Option Explicit
Option Compare Text 'ignore case sensitivity when comparing strings

Sub SendEmail()
Dim objOutlook As Object
Dim objMail As Object
Dim OL As Outlook.Application, ES As Worksheet, r As Long, i As Long
Set objOutlook = CreateObject("Outlook.Application")
Set objMail = objOutlook.CreateItem(0)
Dim path As String

r = Cells(Rows.Count, 1).End(xlUp).Row

For i = 5 To r
    path = "\\Wbcphfil01.wbc.lan\dts\Groups\Operational_Services\opserv_group\Enforcement\NRSWA\Licences\Mobile Plant\Applications 2019-20\" & Cells(i, 4) & " (" & Cells(i, 13) & ").docx"

    With Cells(i, 7)
        If .Value <> "" And Cells(i, 5) = "Mobile Plant" Then
            With objMail
                .To = Cells(i, 11).Value
                .Subject = "Your " & Cells(i, 5).Value & " licence - " & Cells(i, 4).Value
                .Body = "abc"
                .Attachments.Add path
                .Display
            End With
        End If
    End With
Next i

Set objOutlook = Nothing
Set objMail = Nothing
End Sub