如何自动更新邮件中超链接的当日日期命名文件路径?
自动更新邮件超链接中的当日文件名
当然可以实现自动更新!你只需要把固定的文件名替换成动态生成的当日日期字符串,就能让超链接自动指向当日的文件。下面是具体的修改方案:
核心思路
你的文件名是MMDD格式(比如0316代表3月16日),可以用VBA的Format(Date, "MMDD")函数直接生成这个格式的日期字符串,把它嵌入到超链接的路径里就行。
修改后的完整代码
我帮你调整了Data_EMail子程序中HTMLBody的部分,重点修改了超链接里的文件名部分:
Function GetBoiler(ByVal sFile As String) As String Dim fso As Object Dim ts As Object Set fso = CreateObject("Scripting.FileSystemObject") Set ts = fso.GetFile(sFile).openastextstream(1, -2) GetBoiler = ts.readall ts.Close End Function Sub Data_EMail() Dim OLApp As Object Dim OLMail As Object Dim SigString As String Dim Signature As String Dim str_MsgBody As String Dim todayFileName As String ' 新增变量存储当日文件名 SigString = "C:\Users\Name\AppData\Roaming\Microsoft\Signatures\eForms.htm" Signature = GetBoiler(SigString) If Dir(SigString) = "" Then MsgBox "No Signature Saved to C Drive to send Emails" End If ' 生成当日MMDD格式的文件名 todayFileName = Format(Date, "MMDD") Set OLApp = CreateObject("Outlook.Application") Set OLMail = OLApp.CreateItem(0) OLApp.Session.Logon With OLMail .To = "" .CC = "" .Subject = "Data " & Date .HTMLBody = _ "<p>write your text here</p>" & _ "<a href=" & Chr(34) & "file://///...../" & todayFileName & ".xlsx" & Chr(34) & ">Data</a>" & Signature .Display End With Set OLMail = Nothing Set OLApp = Nothing End Sub
关键修改点
- 新增了
todayFileName变量,用Format(Date, "MMDD")生成当日的文件名前缀; - 在超链接路径中,把原来固定的
0316替换成todayFileName,这样每次运行代码时,都会自动替换为当日的日期。
扩展说明
如果之后你的文件名格式需要调整(比如加上年份变成YYYYMMDD),只需要修改Format函数的参数即可:
todayFileName = Format(Date, "YYYYMMDD") ' 生成类似20240316的文件名
测试的时候,你还可以用DateAdd函数生成过去或未来的日期,验证代码是否正常工作:
todayFileName = Format(DateAdd("d", -1, Date), "MMDD") ' 生成昨天的日期
内容的提问来源于stack exchange,提问作者Zeno Graue
相关产品推荐
相关产品推荐

