VBA调用Outlook发送邮件时Excel工作簿未附加问题咨询
问题原因
你代码里的附件添加逻辑存在3处可直接导致附件加载失败的语法/参数错误:
- 盘符格式错误:路径开头的
W\缺少盘符必须的冒号分隔符,正确写法为W:\ - 路径字符串不完整:
"W\Desktop\Files\Workbook1既没有闭合双引号,也没有补充工作簿的后缀名(如.xlsx/.xlsm),属于非法路径参数 - 异常被静默忽略:你开启了
On Error Resume Next配置,路径错误触发的运行时异常被直接跳过,不会弹出报错提示,最终仅表现为附件未添加
修复方案
将Mail_small_Text_Outlook过程中附件添加的代码行替换为正确的完整路径即可,示例如下:
Sub Mail_small_Text_Outlook() Dim xOutApp As Object Dim xOutMail As Object Dim xMailBody As String Set xOutApp = CreateObject("Outlook.Application") Set xOutMail = xOutApp.CreateItem(0) xMailBody = "您好" & vbNewLine & vbNewLine & _ "这是第1行内容" & vbNewLine & _ "这是第2行内容" On Error Resume Next With xOutMail .To = "收件人邮箱地址" .CC = "" .BCC = "" .Subject = "单元格值触发的测试邮件" .Body = xMailBody ' 修正后的附件路径,注意冒号、后缀、闭合引号 .Attachments.Add "W:\Desktop\Files\Workbook1.xlsx" ' 如果你要附加当前正在运行代码的工作簿,也可以用下面的写法避免写死路径出错 ' .Attachments.Add ThisWorkbook.FullName .Display '如果要直接发送替换为.Send End With On Error GoTo 0 Set xOutMail = Nothing Set xOutApp = Nothing End Sub
如果修复后还是无法添加附件,可以临时注释掉On Error Resume Next行,运行代码查看具体报错信息,定位问题。
内容的提问来源于stack exchange,提问作者Mike
相关产品推荐
相关产品推荐

