excel VBA将上标字符串传递到Outlook

sr4lhrrt  于 2023-03-31  发布在  其他
关注(0)|答案(2)|浏览(117)

我想创建序数并以正确的格式将它们传递到Outlook正文,但当我这样做时,所有格式都消失了。如何管理这种情况?
序数是1st、2nd、3rd等。
我的代码如下

Dim OutApp As Outlook.Application
Dim OutAppoint As Outlook.AppointmentItem

Set OutApp = New Outlook.Application
Set OutAppoint = OutApp.CreateItem(olAppointmentItem)

Cells(1, 1).Value = "2nd"
Cells(1, 1).Characters(2, 3).Font.Superscript = True
Ordinal_number = Cells(1,1).Value

With OutAppoint:
   .Body = Ordinal_number
   .Display
End With
mxg2im7a

mxg2im7a1#

Body属性返回或设置表示Outlook项目的明文正文的字符串。因此,它不能包含您在Excel端设置的任何格式。相反,您可以复制Excel中所需的内容并使用Word对象模型将其粘贴到邮件正文中,或者仅将所有内容导出到Excel中的HTML标记,然后在Outlook中设置HTMLBody属性。
Outlook对象模型支持三种主要的自定义邮件正文的方法:

  1. Body属性返回或设置表示Outlook项的明文正文的字符串。
  2. MailItem类的HTMLBody属性返回或设置表示指定项的HTML主体的字符串。设置HTMLBody属性将始终立即更新Body属性。
  3. Word对象模型可用于处理邮件正文。有关详细信息,请参阅Chapter 17: Working with Item Bodies
ddrv8njm

ddrv8njm2#

正如您所注意到的,格式将丢失。请尝试以下操作。这些字符至少可以在复制过程中保留下来。请确保它们始终保留下来。
代码使用上标和修饰符unicode字母代替。

Dim SuperST As String, SuperND As String, SuperRD As String, SuperTH As String
SuperST = ChrW(&H2E2) & ChrW(&H1D57)
SuperND = ChrW(&H207F) & ChrW(&H1D48)
SuperRD = ChrW(&H2B3) & ChrW(&H1D48)
SuperTH = ChrW(&H1D57) & ChrW(&H2B0)
...
Cells(1, 1).Value = "2" & SuperND
'Cells(1, 1).Characters(2, 3).Font.Superscript = True ' No need for this anymore

相关问题