又整整一個多月沒有發文了,來新公司後幾乎碰觸到的都是Windows系統,因此也學習到一些新技術,而VBA巨集算是我比較感興趣的,這篇文章就記錄如何用VBA巨集、將Outlook的寄件帳號自動帶入,不用每次很麻煩都要手動選。
公司最近在將Exchange信箱上到雲端的O365,過程中遇到很多困難,上雲也並非想像中容易,很多原先使用者所習慣的操作方式,到了雲端上後也沒有那麼簡單就能同步。這次遇到的難題是有許多屬於個人使用的信箱帳號要轉成O365的共用信箱,而且要能夠收發信,更多的要求是共用信箱要當作主要的發信帳號,然後發信後的寄件備份又要能正常落入共用信箱自己,很多奇奇怪怪的需求。最初的做法是在帳號設定上直接新增共用信箱帳號,並且設定為預設帳號,結果這就變成悲劇的開始。
在微軟的政策上這樣做是不可行的,共用信箱是不能設定成預設帳號來用,一旦這樣用的結果就是Outlook會變得收信非常緩慢,更慘的是發信會失敗,最近整個動彈不得,使用者叫苦連天,原廠給的協助訊息大多是官方教程,像這樣自己要硬來的需求,他們通常是不會花太多時間幫忙處理的,花了好幾周後,網路上還是找到了神人的做法,要滿足這樣的特殊需求,就不要用不符合微軟原廠設計的做法,乾脆維持原樣,不要硬加共用信箱帳號,如果使用者想把共用信箱當作預設寄件帳號的話,就用巨集自動化的方式,這樣問題就能解決了。
1.共用信箱如果在後台已經委派好,它自己會隨著使用者登入時推播出現的
2.像下列這樣把共用信箱帳號設定進去的作法是會衝突的,應該刪除,只留個人信箱
如果有像這樣的設定,就刪除共用信箱帳號 |
可以刪除掉暫存檔,不用擔心會信箱資料遺失 |
3.進入Outlook,按下Alt+F11或者是Fn+Alt+F11,打開巨集編寫程式
![]() |
打開vba編輯用的程式 |
4.將下列VBA貼入,並修改部分內容
'================================================================================ 'Description: Outlook macro to automatically set a different ' From address. ' 'Comment: You can set the email address at the bottom of the code. ' Uncomment the myOlExp_InlineResponse sub to also make it ' work with the Reading Pane reply feature of Outlook 2013/2016/2019/365. ' ' author : Robert Sparnaaij ' version: 1.1 ' website: https://www.howto-outlook.com/howto/setfromaddress.htm '================================================================================ Dim WithEvents objInspectors As Outlook.Inspectors Dim WithEvents objMailItem As Outlook.MailItem Dim WithEvents myOlExp As Outlook.Explorer Private Sub Application_Startup() Initialize_handler End Sub Public Sub Initialize_handler() Set objInspectors = Application.Inspectors Set myOlExp = Application.ActiveExplorer End Sub Private Sub objInspectors_NewInspector(ByVal Inspector As Inspector) If Inspector.CurrentItem.Class = olMail Then Set objMailItem = Inspector.CurrentItem If objMailItem.Sent = False Then Call SetFromAddress(objMailItem) End If End If End Sub 'Uncomment the next 3 lines to enable Outlook 2013/2016/2019/365 Reading Pane Reply 'Private Sub myOlExp_InlineResponse(ByVal objItem As Object) ' Call SetFromAddress(objItem) 'End Sub Public Sub SetFromAddress(oMail As Outlook.MailItem) ' Set your preferred default From address below. ' Exchange permissions determine if it is actually stamped ' as "Sent On Behalf Of" or "Sent As". ' The address is not properly updated for the InlineResponse ' feature in Outlook 2013/2016/365. This is only a visual bug. oMail.SentOnBehalfOfName = "delegate@domain.com" End Sub
5.移除此段落前面的註解符號,使其生效
Private Sub myOlExp_InlineResponse(ByVal objItem As Object) Call SetFrom(objItem) End Sub
6.將想要作為主要發信信箱的帳號修改至雙引號內
oMail.SentOnBehalfOfName = "delegate@domain.com"
7.透過自簽憑證啟用巨集
這份巨集得要有一個自簽憑證才能夠生效,所以就去Office內建的程式製作
依不同版本的Office,自簽憑證程式的位置有所不同
- Windows 32-bit
C:\Program Files\Microsoft Office\Office <version number>
- Windows 64-bit with Office 32-bit
C:\Program Files (x86)\Microsoft Office\Office <version number>
- Windows 64-bit with Office 64-bit
C:\Program Files\Microsoft Office\Office <version number>
- Office 365 32-bit (Subscription based or Click-to-Run version of Office 2016 / 2019)
C:\Program Files (x86)\Microsoft Office\root\Office16
- Office 365 64-bit (Subscription based or Click-to-Run version of Office 2016 / 2019)
C:\Program Files\Microsoft Office\root\Office16
![]() |
找到程式並底兩下製作憑證 |
![]() |
自命名憑證的名稱 |
![]() |
憑證完成後,再到Outlook上啟用巨集憑證 |
![]() |
選用剛剛建立的憑證 |
檔案>選項>信任中心>信任中心設定>巨集設定>經由數位簽章的巨集會啟用,其他所有巨集會停用
![]() |
確認啟用巨集的安全層級 |
完成以上流程以後,就可以把共用信箱作為寄件的預設帳號發信了。
8.設定共用信箱的寄件備份不移入個人備份
在網頁版上使用共用信箱寄件會以正常方式進入到寄件備份,但在Outlook 2016則會跑到個人信箱的寄件備份,此部分只需要修改機碼來修正即可。製作機碼的內容如下:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0\Outlook\Preferences]
"DelegateSentItemsStyle"=dword:00000001
機碼檔命名為DelegateSentItemsStyle.reg,將此檔案傳給使用者並執行即能解決問題。
沒有留言:
張貼留言