在VBA中格式化文本string的特定部分

我正在创build一个macros将保存当前的工作簿,创build一个新的Outlook消息,并将该文件附加到邮件的过程中。 我的macros是这样做的,但是我不能按照我的喜好格式化电子邮件正文中的文本。

Dim OutApp As Object Dim OutMail As Object Dim sBody, Customer As String ActiveWorkbook.Save sBody = "All," & Chr(10) & Chr(10) & "Please Approve attached Request below for " & rType & "." _ & Chr(10) & Chr(10) & "Customer: " & customer & Chr(10) Set OutApp = CreateObject("Outlook.Application") Set OutMail = OutApp.CreateItem(0) On Error Resume Next With OutMail .to = recip .CC = CCed .BCC = "" .subject = subject .Body = sBody .Attachments.Add ActiveWorkbook.FullName .display End With On Error GoTo 0 End Sub 

我希望在电子邮件中显示以下消息(使用格式)。

所有,

请在下面批准“rtype”的附加请求。

客户: Stackoverflow

所以,“客户”这个词需要大胆。 我累了多个解决scheme,但他们不工作,因为这是创build一个Outlook邮件对象。

任何帮助将不胜感激。

**

解决scheme:通过“.HTMLBody”使HTML标签正常工作,将主体types改为HTML。 你将能够使用HTML标签。 荣誉迪克Kusleika

**

HTML标签可以工作。 我不知道你为什么说他们没有。

 sBody = "All,<br /><br />Please Approve attached request for " & rType & ".<br /><br /><strong>Customer:</strong> " & customer & "<br />" 

那么代替.Body属性,请使用.HTMLBody

 .HTMLBody = sBody 

你有几个select

1)像less数人使用HTML一样评论

2)将该文本放在一个隐藏的表格中,并根据需要进行格式化,然后将其作为一个范围引用到body中,例如.Body = sheets(“hidden_​​Body”)。range(“A1:B10”)

3)你可以尝试使用类似下面的东西(请注意下面是用于添加一个string,并需要修改,以适应您的目的)

 Sub Build_Wingdings(Sh As Worksheet, rng As Range) Dim cur_L As Integer cur_L = 1 Sheets("Word_Specifications").Range("BZ9").Copy Sh.Range(rng.Address).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False With Sheets("Word_Specifications") .Select For Each cell In .Range(.Range("Word_Standard_Start").Address, .Range("Word_Standard_Start").End(xlDown).Address) If cell.value = "" Then Else L = Len(cell.value) + 1 With Sh.Range(rng.Address) With .Characters(start:=cur_L, Length:=L).Font .Name = "Arial" .FontStyle = "Regular" .Size = 9 .Bold = False .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With cur_L = cur_L + L If .value <> "" Then add_Wingdings cur_L, 1, Sh, rng cur_L = cur_L + 2 End If End With End If Next End With End Sub Sub add_Wingdings(start As Integer, Length As Integer, Sh As Worksheet, rng As Range) With Sh.Range(rng.Address).Characters(start:=start, Length:=Length).Font .Name = "Wingdings 3" .FontStyle = "Regular" .Size = 9 .Bold = False .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ThemeColor = xlThemeColorLight1 .TintAndShade = 0 .ThemeFont = xlThemeFontNone End With End Sub