When automating Outlook from a VB application, I needed to find a way to transfer data from a RichTextBox control to an Outlook message. Unfortunately using Clipboard.SetText and Clipboard.GetText did not save the formatting of the entered text. However, I found the best way to transfer formatted text from a RichTextBox control to an Outlook message was to use “Sendkeys” to simulate Ctrl + C and Ctrl + V for copying and pasting (respectively).
This code assumes a project reference to the Outlook Object Library. My RichTextBox Control is named rtfData:
Dim objOutlook As New Outlook.Application Dim objOutlookMsg As Outlook.MailItem Set objOutlookMsg = objOutlook.CreateItem(0) objOutlookMsg.BCC = "[email protected]" objOutlookMsg.To = "[email protected]" objOutlookMsg.Subject = Form1.Text1.Text Clipboard.Clear rtfData.SelStart = "0" rtfData.SelLength = Len(rtfData.Text) rtfData.SetFocus SendKeys "^c", True 'copy text Me.Hide objOutlookMsg.Display 'display Outlook message SendKeys "^v", True ' paste text Me.Show
The above code will paste all text from the RichTextBox control to theOutlook Message and will preserve all formatting.