IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

如何在Microsoft Outlook中‧為回覆郵件時加入原來附件

01. 同事今天有這樣的要求,但Outlook卻沒有這樣的設定。網上是有『Kutools For Outlook』這個軟件可以做到這個要求,但同事看到那美金39圓的價錢,就已經耍手兼擰頭。當然,回覆郵件時加入原來附件,其實又有何用呢?

02. 在網上尋找一下,原來2014年已經有人會有這樣的要求,這個『網站』也介紹了不同的方法。而我今次會選用免費又最方便使用的方法,就是直接在Outlook建立圖示,一按就可以達成為回覆郵件加入附件。

03. 首先當然是找到有關的『VBA程式碼』。

Sub RunReplyWithAttachments()
Dim oReply As Outlook.MailItem
Dim oItem As Object
Set oItem = GetCurrentItem()
If Not oItem Is Nothing Then
Set oReply = oItem.Reply
CopyAttachments oItem, oReply
oReply.Display
End If
Set oReply = Nothing
Set oItem = Nothing
End Sub

Sub RunReplyAllWithAttachments()
Dim oReply As Outlook.MailItem
Dim oItem As Object
Set oItem = GetCurrentItem()
If Not oItem Is Nothing Then
Set oReply = oItem.ReplyAll
CopyAttachments oItem, oReply
oReply.Display
End If
Set oReply = Nothing
Set oItem = Nothing
End Sub

Function GetCurrentItem() As Object
On Error Resume Next
Select Case TypeName(Application.ActiveWindow)
Case "Explorer"
Set GetCurrentItem = Application.ActiveExplorer.Selection.Item(1)
Case "Inspector"
Set GetCurrentItem = Application.ActiveInspector.CurrentItem
End Select
End Function

Sub CopyAttachments(oSourceItem, oTargetItem)
Set oFso = CreateObject("Scripting.FileSystemObject")
Set fldTemp = oFso.GetSpecialFolder(2) 'Temporary Folder
sPath = fldTemp.Path & "\"
For Each oAtt In oSourceItem.Attachments
sFile = sPath & oAtt.FileName
oAtt.SaveAsFile sFile
oTargetItem.Attachments.Add sFile, , , oAtt.DisplayName
oFso.DeleteFile sFile
Next
Set fldTemp = Nothing
Set oFso = Nothing
End Sub

04. 執行『Outlook』,按鍵盤『ALT+F11』,進入『Microsoft Visual Basic For Application』畫面。

05. 展開『專案1(VbaProject.OTM)』。

06. 在『ThisOutlookSession』貼上第3項的程式碼。儲存後關閉視窗。

07. 在Outlook主畫面按『ALT+F』,再選擇『選項』。

08. 左邊選『自動功能區』,右邊在『主要索引標籤』位置打開『首頁(郵件)』、『回覆』。

09. 按下面『新增群組』。

10. 按下面『重新命名』,將名稱改為『回覆含附件』。

11. 在『由此選擇命令』位置,選『巨集』。

12. 之前建立的兩個的巨集名稱便會顯示出來。

13. 將兩個巨集『新增』到『主要索引標籤』位置。

14. 將有關巨集名稱改容易識認的名稱,再按『確定』。

15. Outlook主畫面上方便會看到新增的功能區。

16a. 最後,需要調整巨集的安全性為『所有巨集都顯示通知』。

16b. 每次電腦第一次啟動Outlook時,使用到有關巨集,便會出現以下通知。

17a. 如果想避免每次電腦第一次啟動Outlook時出現的巨集通知。可以利用Office內建的自簽數碼證書服務。

17b. 以Office 2016 x64為例,首先到『C:\Program Files\Microsoft Office\root\Office16』資料夾,執行『SELFCERT.EXE』檔案。

17c. 輸入憑證名稱。

17d. 成功建立憑證。

17e. 按Windows鍵,輸入『certmgr.msc』。

17f. 左邊目錄選『個人』、『憑證』,右邊便會看到剛來建立的憑證。

17g. 進入Outlook,按鍵盤『ALT+F11』,進入『Microsoft Visual Basic For Application』畫面。在上面目錄選『工具』、『數位簽證』。

17h. 在『簽章為』位置按『選擇』。

17i. 程式會自動找到剛才建立的證書。

17j. 完成後會看到憑證名稱。

17k. 關閉Outlook,儲存『VbaProject.OTM』。再次重新啟動Outlook,會出現『Microsoft Outlook安全性注意事項』對話匣,留意下面『信任來自於這個發行者的所有文件』,如接受就會容許執行這個發行者的建立的巨集。

18. 同事反映有些郵件使用巨集沒有反應,檢查下發現當郵件內有嵌入物件(embedded objects),當運行巨集時『oAtt.SaveAsFile sFile』便會出現錯誤。更新下只能把相關物件刪除,但似乎有違設計原意,但『回覆郵件時加入原來附件 (Reply with attachment)』究竟是否應包括嵌入物件,我們再作研究。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *