You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA添加SharePoint附件时文件名空格变%20的问题求助

SharePoint文件邮件附件空格变%20的修复方案

问题说明

存储在SharePoint上的Excel文件,通过VBA宏添加为Outlook邮件附件时,文件名中的空格会被替换为%20(例如Old Dates.xlsx变成Old%20Dates.xlsx),导致收件人收到的附件名称异常。尝试使用FullNameURLEncoded替代FullName,问题未解决。

解决方法

方案1:使用本地同步路径(优先推荐)

如果文件已同步到本地OneDrive/SharePoint同步文件夹,直接用ActiveWorkbook.FullName作为附件路径即可——此时返回的是本地文件路径,不会出现URL编码问题:

  • 确保文件完成本地同步,避免路径无效;
  • 替换代码中.Attachments.Add的参数为ActiveWorkbook.FullName。

方案2:解码URL并自定义附件显示名

若无法使用本地路径,可手动解码URL路径,并强制设置附件的显示名称:

  1. 用Replace函数将%20替换回空格,还原原始路径;
  2. 添加附件后,通过Attachment.DisplayName属性指定为原始文件名。

修改后的VBA代码

Dim EmailApp As Outlook.Application
Dim EmailItem As Outlook.MailItem
Dim fileName As String
Dim decodedFilePath As String
Dim att As Attachment

Set EmailApp = New Outlook.Application
Set EmailItem = EmailApp.CreateItem(olMailItem)

' 获取原始文件名和解码后的文件路径
fileName = ActiveWorkbook.Name
decodedFilePath = Replace(ActiveWorkbook.FullNameURLEncoded, "%20", " ")

With EmailItem
   .To = "michelle@myemail.com"
   .SentOnBehalfOfName = "holley@myemail.com"
   .CC = ""
   .BCC = ""
   .Subject = "Dates"
   .HTMLBody = "Here is this quarters file." & vbNewLine & vbNewLine & vbNewLine
   ' 添加附件并指定显示名称
   Set att = .Attachments.Add(decodedFilePath)
   att.DisplayName = fileName
   .Display
   ActiveWorkbook.Close
End With

' 释放对象资源
Set att = Nothing
Set EmailItem = Nothing
Set EmailApp = Nothing

内容的提问来源于stack exchange,提问作者holley

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:47:48