A little-known feature of the RichTextBox control allows you to insert an OLE object in the text being edited. However, you can do so only programmatically, by adding an element to the OleObjects collection. An easy way to let the user select the object to be embedded in the control is using the InsertObjDlg method of the OLE Container object.
To test this functionality, drop a RichTextBox and an OLE control on a form (leaving their default names), add a cmdInsert button and write this code:
Private Sub cmdInsert_Click()
' Show the InsertObject dialog
If Len(OLE1.Class) Then
' If the user selected an object, show it in the RichTextBox control
RichTextBox1.OLEObjects.Add , , , OLE1.Class
OLE1.Class = ""