2016-02-11 58 views
0

我有一些VBA代碼,用於將Outlook中的文本發送給我的項目團隊成員。對於某些背景:對於非AT用戶,我們沒有任何問題通過將人員號碼全部插入Outlook電子郵件的收件人字段來從Outlook發送短信。但是,所有AT用戶都將收到文本作爲羣組消息,這是我們想要避免的。當我們進行羣組發送時,非AT用戶正確接收單個文本。在Outlook中使用VBA與Emojis發送文本

我們已經編寫了一些VBA代碼來循環使用AT & T號碼的電子表格,以便Outlook根據AT & T號碼發送一封電子郵件。這對我們來說工作得很好,但是,我們希望在我們發送的文本中添加一些表情符號。我做了很多搜索和搜索stackoverflow的問題,我似乎無法找到爲此目的而構建的任何代碼。當談到VBA時,我也是一個完整的noob,而且我已經將這個解決方案拼湊在一起,遠遠沒有從同事的幫助和通過互聯網上的線索閱讀。關於表情符的這一點給了我足夠的麻煩,我想我會分解並提交這篇文章。

僅供參考,這裏是我的代碼:

Sub EmojiTest() 
    Dim objOutlook As Outlook.Application 
    Dim objOutlookMsg As Outlook.MailItem 
    Dim objOutlookRecip As Outlook.Recipient 
    Dim MobileNumber As String 

     ' Create the Outlook session. 
     Set objOutlook = CreateObject("Outlook.Application") 
     Set xlApp = CreateObject("Excel.Application") 

     'Grab list from Excel 
     Set xlAtt = xlApp.Workbooks.Open("C:\Users\Username\Desktop\Spreadsheet with AT&T numbers.xlsx") 
     xlAtt.Activate 
     LastRow = xlAtt.ActiveSheet.Range("B" & xlAtt.ActiveSheet.Rows.Count).End(-4162).Row 

     For i = 1 To LastRow 
     xlAtt.Activate 
     MobileNumber = xlAtt.ActiveSheet.Range("B" & i).Value 

     ' Create the message. 
     Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

     objOutlookMsg.SentOnBehalfOfName = "[email protected]" 

     With objOutlookMsg 
      ' Add the To recipient(s) to the message. 
      Set objOutlookRecip = .Recipients.Add(MobileNumber) 
      objOutlookRecip.Type = olTo 

      ' Set the Subject, Body, and Importance of the message. 
      .Subject = "Emoji Test" 
      .Body = "Text with emojis" 
      .Save 
      .Send 
     End With 
     Next i 
     Set objOutlook = Nothing 
     xlApp.Workbooks.Close 
     Set xlApp = Nothing 
End Sub 

這是代碼,我從來不敢拿出自己因爲我完全沒有用VBA經驗,經驗有限,一般編碼。任何幫助深表感謝。

回答

2

變化:

.Body = "Text with emojis"

要:

.Body = "\ud83d\ude03"

可用here全部列表。複製名爲Java轉義字符串的框。

\ u轉義unicode序列,因此輸入「\ u」和UTF-16序列應該允許您插入任何表情符號。

一些表情符號實際上是2個單獨的字符序列,所以你必須鏈接在一起。

+1

我試過了,它最終傳遞了我輸入的文本。如在,而不是一個笑臉,它通過作爲「\ u1F601」。我也嘗試過「\ u + 1F601」這就是它在你鏈接的網站上的列表,但是最終的文本仍然是純文本而沒有表情符號。 – Choofin

+1

你可以試試這個字符串嗎? '「\ uD83D \ uDC71」' – SCGB

+1

哼,那也不管用。我在某處讀某些字體無法訪問某個點以上的Unicode值。這可能是一個問題嗎?我甚至不知道這個問題是否有意義。 感謝您對此的幫助。 – Choofin

1

我明白了!

Sub EmojiTest() 
    Dim objOutlook As Outlook.Application 
    Dim objOutlookMsg As Outlook.MailItem 
    Dim objOutlookRecip As Outlook.Recipient 
    Dim MobileNumber As String 
    Dim strbody As String 

     ' Create the Outlook session. 
     Set objOutlook = CreateObject("Outlook.Application") 
     Set xlApp = CreateObject("Excel.Application") 

     'Grab list from Excel 
     Set xlAtt = xlApp.Workbooks.Open("C:\Users\user\Desktop\Spreadsheet.xlsx") 
     xlAtt.Activate 
     LastRow = xlAtt.ActiveSheet.Range("B" & xlAtt.ActiveSheet.Rows.Count).End(-4162).Row 

     For i = 1 To LastRow 
     xlAtt.Activate 
     MobileNumber = xlAtt.ActiveSheet.Range("B" & i).Value 

     ' Create the message. 
     Set objOutlookMsg = objOutlook.CreateItem(olMailItem) 

     objOutlookMsg.SentOnBehalfOfName = "[email protected]" 
     strbody = "<BODY style=font-size:11pt;font-family:Segoe UI Symbol>&#127881;Congrats!<p>Paragraph 2.<p>Paragraph 3.</BODY>" 
     With objOutlookMsg 
      ' Add the To recipient(s) to the message. 
      Set objOutlookRecip = .Recipients.Add(MobileNumber) 
      objOutlookRecip.Type = olTo 

      ' Set the Subject, Body, and Importance of the message. 
      .Subject = "Emoji Test" 
      .HTMLBody = strbody 


      .Save 
      .Send 
     End With 
     Next i 
     Set objOutlook = Nothing 
     xlApp.Workbooks.Close 
     Set xlApp = Nothing 
End Sub 

基本上,我不得不將我的消息轉換成HTML。我在頂部使用「Dim strbody As String」,然後在With語句中使用「.HTMLBody = strbody」。一旦我這樣做了,使用HTML十六進制代碼輸入我的表情符號是微不足道的。以下是我使用的HTML十六進制代碼頁(&#127881):http://www.fileformat.info/info/unicode/char/1f389/index.htm

瞭解了很多關於使用VBA這樣做,所以它很有趣。

謝謝你的幫助山姆。

+1

優秀,做得好! – SCGB

相關問題