Outlook 內建簽名支援 Word 域(如 CREATEDATE),但新建郵件時不會自動更新為當前日期,需手動按 F9 刷新,體驗極差。本文提供 VBA 腳本方案:以 HTML 簽名取代內建簽名,每次新建郵件動態注入當前日期。
ThisOutlookSession'------------------------------------------------------------------
Dim myOlApp As New Outlook.Application
Private WithEvents myOlInspectors As Outlook.Inspectors
Private myMailItem As Outlook.MailItem
Function Signature() As String
Dim mDate As Date
mDate = Format(Now, "yyyy-MM-dd") ' 當前日期
Signature = ""
Signature = Signature & "
"
Signature = Signature & "" & mDate & "
"
Signature = Signature & "致禮!
"
Signature = Signature & "尚德明
"
Signature = Signature & "//---------------------------------------------------------------
"
Signature = Signature & " 德國倍福自動化有限公司上海代表處
"
Signature = Signature & " ADD.: 上海市江場三路市北工業園區163 號5樓(200436 )
"
Signature = Signature & " TEL: 021-66312666-837
"
Signature = Signature & " FAX: 021-66315696
"
Signature = Signature & " MAIL: d.shang@beckhoff.com.cn
"
Signature = Signature & " Web: www.beckhoff.com.cn
"
Signature = Signature & " www.pc-control.net
"
Signature = Signature & " www.ethercat.org
"
Signature = Signature & "//---------------------------------------------------------------"
Signature = Signature & ""
End Function
Private Sub Application_Startup()
Set myOlInspectors = myOlApp.Inspectors
End Sub
Private Sub myOlInspectors_NewInspector(ByVal Inspector As Inspector)
Set myMailItem = Inspector.CurrentItem
With myMailItem
.HTMLBody = Signature() ' 注入動態 HTML 簽名
.Display ' Outlook 2007 請註釋此行
End With
End Sub
'----------------------------------------------------------------------------------
| 事件/方法 | 角色 |
|---|---|
Application_Startup | Outlook 啟動時觸發,掛鉤 Inspectors 集合事件 |
Inspectors_NewInspector | 每次新建/開啟郵件檢視器觸發,注入簽名 |
Signature() | 動態生成含當前日期的 HTML 字串 |
.HTMLBody | 直接設定郵件主體為 HTML,支援富文本樣式 |
Format(Now, "yyyy-MM-dd") 調整日期格式font-size、顏色、連結等樣式.Display 行,否則會強制彈窗| 優點 | 缺點 |
|---|---|
| 日期真正自動更新,無需手動干預 | 需降低宏安全性(潛在風險) |
| HTML 富文本,樣式可控 | 僅在安裝腳本的機器生效 |
| 邏輯集中,易維護 | 企業環境可能受群組策略限制 |
| 可擴展:動態查詢資料庫、AD 等 | 非標準方案,跨版本相容性需測試 |
VbaProject.OTM 或使用加載項 (VSTO) 替代宏。