Excel 将变量添加到.Attachments.Add

Excel 将变量添加到.Attachments.Add,excel,vba,outlook,Excel,Vba,Outlook,我正在尝试使用.Attachments.Add中的路径变量发送电子邮件,但该电子邮件不包括附件。当我只是在.Attachments.add之后添加实际路径时,没有变量(如下所示),电子邮件包含附件 .Attachments.Add "C:\Users\id\Desktop\file_name.xlsx" 附加工作簿的方法(使用路径变量)曾经工作过,但由于某种原因,现在不附加工作簿。由于路径变量的字符串与实际路径相同,在使用变量时,什么会导致工作簿不附加?下面是我的代码 两个参数(标题1和标题2

我正在尝试使用.Attachments.Add中的路径变量发送电子邮件,但该电子邮件不包括附件。当我只是在.Attachments.add之后添加实际路径时,没有变量(如下所示),电子邮件包含附件

.Attachments.Add "C:\Users\id\Desktop\file_name.xlsx"
附加工作簿的方法(使用路径变量)曾经工作过,但由于某种原因,现在不附加工作簿。由于路径变量的字符串与实际路径相同,在使用变量时,什么会导致工作簿不附加?下面是我的代码

两个参数(标题1和标题2)是工作簿标题

Sub Mail_Workbook_Comb1(ByVal title1 As String, ByVal title2 As String)

Dim OutApp As Object
Dim OutMail As Object
Dim id As String
Dim path1 As String
Dim path2 As String
Dim rnge As Range
Dim sht As Excel.Worksheet
Dim wdoc As Word.Document
Dim distroRnge As Range

id = LCase(workbooks("Supplier_Automation.xlsm").Sheets("Home").Range("C3"))
path1 = "C:\Users\" & id & "\Desktop\" & title1 & ".xlsx"
path2 = "C:\Users\" & id & "\Desktop\" & title2 & ".xlsx"

MsgBox path1
MsgBox path2

Set distroRnge = workbooks("Supplier_Automation.xlsm").Sheets("Distros").Range("A29")
Set sht = workbooks("Supplier_Automation.xlsm").Sheets("Email Template")
Set rnge = sht.Range("B1:B19")
    rnge.CopyPicture Appearance:=xlScreen, Format:=xlPicture

With Application
    .EnableEvents = False
    .ScreenUpdating = False
End With

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
Set wdoc = OutMail.GetInspector.WordEditor

On Error Resume Next
With OutMail
    .To = myname@email.com
    .CC = ""
    .BCC = ""
    .Subject = "This is the Subject line"
    .body = ""
    .Attachments.Add path1
    .Attachments.Add path2
    wdoc.Range.PasteAndFormat Type:=wdChartPicture
    With wdoc
        .InlineShapes(1).Height = 345
     End With
    .display   'or use .Send
End With

With Application
    .EnableEvents = True
    .ScreenUpdating = True
End With

On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

当title1和title2参数传递工作簿标题时,我意识到它们不包括在调用Mail_工作簿_Comb1子项之前添加到工作簿的日期。最后,我在路径变量字符串的末尾添加了一个日期变量,这使得路径变量与保存在桌面上的内容相匹配

Dim edate As String
Dim today As String

today = Date

edate = Format(DateAdd("d", -1, today), "mmdd")

id = LCase(workbooks("Supplier_Automation.xlsm").Sheets("Home").Range("C3"))
path1 = "C:\Users\" & id & "\Desktop\" & title1 & " " & edate & ".xlsx"
path2 = "C:\Users\" & id & "\Desktop\" & title2 & " " & edate & ".xlsx"
path3 = "C:\Users\" & id & "\Desktop\" & title3 & " " & edate & ".xlsx"

您是否尝试将第二个
.Attachments.Add path1
更改为
.Attachments.Add path2
?是否“不工作”代表“抛出错误”?如果是,错误是什么?如果没有,那么发生了什么?删除错误时的
“下一步继续”
,以获取有关实际情况的关键信息。@Mistella,这应该是路径2。我编辑了我的代码以包含它。我用path2再次测试了它,但附件仍然没有显示。@MathieuGuindon我编辑了我的文章,以便更具体一些。发生的情况是,路径变量(path1和path2)不允许工作簿附加到电子邮件。如果我完全取出变量并添加文本,变量将是(.Attachments.add“C:\Users\id\Desktop\file\u name.xlsx”),工作簿会很好地附加。传递到变量中的路径是否存在?您可以使用
DIR(path1)
查看是否存在输出。如果是,它将返回我认为的路径,如果不是,它将返回vbNullString