2012-05-23 99 views
0

有人在工作時問我是否可以實現一個簡單的系統,讓他根據他可以輸入的幾個參數發送Outlook模板郵件。在Outlook VBA中使用地址簿

一個例子是這樣的消息:

"Hello, 

Please be informed that system **Parameter1** is current down. 

Regards," 

我在想使Outlook中VBA的形式,將動態查找字符串風格像一個參數的時間量(如@@[email protected]@)是在某個模板中找到並隨後在表單中爲每個找到的參數創建一個編輯框。

問題是,我顯然想爲收件人添加一個框。我需要找到一種方式使呼叫Outlook通訊錄,並使其行爲像一個。這比我所希望的更不直觀。到目前爲止,我只設法做到以下幾點:

Dim snd As Outlook.SelectNamesDialog 
Dim displayLL As Boolean 

Set snd = Application.Session.GetSelectNamesDialog() 
snd.NumberOfRecipientSelectors = Outlook.OlRecipientSelectors.olShowTo 
snd.AllowMultipleSelection = True 
displayLL = snd.display() 

正如你所看到的,這只是彈出的地址簿,讓我選擇的幾個地址。但是我很難理解如何實際製作一些實際上像常規Outlook郵件中的「To:」和「CC:」字段的字段。

+0

我認爲這個問題沒有答案的原因是你似乎陷入了特定的實現。你能否清楚說明你的同事的目標是什麼?這樣,有人可以提出一種更簡單或更合適的方法。 – JimmyPena

+0

@JP這裏的目標僅僅是爲了能夠保存模板以發送頻繁發送的郵件(最多每天多次)。他要求製作一個系統,以便他可以在模板郵件中定義參數,這樣一個小型的VBA程序就可以輕鬆地通過它並用他指定的值替換參數值。這樣他就不必每次都處理不斷的'Control-C' - 'Control-V'shenanigans。就像你說的,我太專注於單個實現。我最終使用了一個更簡單但不那麼花哨的解決方案,我在下面解釋。 – RobinM

+0

感謝您的回饋。看起來你找到了一個滿意的解決方案。 – JimmyPena

回答

0

不知道這是多麼相關,考慮到我最終採取了不同的路線,但我想我還是會加上這個,因爲沒有人回答。

我只是通過搜索%AppData%中的模板文件夾來創建一個可以列出所有模板的表單。然後,我會遍歷整個郵件尋找參數樣式的字符串,並在每次遇到這樣的字符串時(通過簡單的輸入框)詢問所需的值。與其添加自定義的「收件人」框,我只是打開了一個新的郵件,並正確填寫了參數。 然後,用戶可以像往常一樣簡單地將收件人添加到郵件中,並且他對此很好。這樣,他也能夠仔細檢查郵件是否看起來完全像他想要的那樣。

沒有什麼花哨的東西或者7歲的孩子無法做到的事情,但它很有效。