我想使用 Excel VBA 在 Outlook 邀请中插入具有格式(链接、粗体、突出显示...)的文本。
我有一个从 Excel 发送邀请的程序。正文包含纯文本。我正在使用 .body,但恐怕我将不得不使用不同的方法(.HTMLBody 不适用于邀请,而 RTFbody 从我读到的内容来看似乎过于复杂)。
我在 Word 中、在 Outlook 中、在剪贴板和其他一些地方都有正文模板作为快速部分。
代码:
Sub Invite_Merge(meeting_date As Date, meeting_time As Double,
meeting_duration As Integer, client_email As String, meeting_subject As String,
meeting_location As String, client_name As String, meeting_body As String,
meeting_sender As String)
Dim O As Outlook.Application
Set O = New Outlook.Application
Dim OAPT As Outlook.AppointmentItem
Set OAPT = O.CreateItem(olAppointmentItem)
OAPT.MeetingStatus = olMeeting
Dim meeting_start
meeting_start = DateValue(meeting_date) + meeting_time
With OAPT
.Recipients.Add (client_email)
.Subject = meeting_subject
.Start = meeting_start
.Duration = meeting_duration
.Location = meeting_location
'.body = here is where I have trouble, the property body only allows me to insert plaintext, .HTMLBody is not a AppointmentsItem property and I have not found an example code on how to use convert a formatted text (with links, bold, different fonts...) into a compatible .RTFBody byte array
.Display
'.Send
End With
End Sub
Sub Send_Invites()
row_number = 2
Do
DoEvents
row_number = row_number + 1
If IsEmpty(Sheet1.Range("D" & row_number)) = False Then
Call Invite_Merge(Sheet1.Range("A" & row_number), Sheet1.Range("B" & row_number), Sheet1.Range("C" & row_number), Sheet1.Range("D" & row_number), Sheet1.Range("E" & row_number), Sheet1.Range("F" & row_number), Sheet1.Range("G" & row_number), Sheet1.Range("H" & row_number), Sheet1.Range("A" & "1"))
End If
Loop Until row_number = 100
End Sub
Run Code Online (Sandbox Code Playgroud)
尝试这个:
Sub SetApptWithHTMLContent()
Dim olapp As Outlook.Application, appt As Outlook.AppointmentItem
Dim m As Outlook.MailItem
Dim rtf() As Byte
Set olapp = New Outlook.Application
Set m = olapp.CreateItem(olMailItem)
Set appt = olapp.CreateItem(olAppointmentItem)
appt.Subject = "Meeting request"
'...set other appointment properties
appt.Display
'put the HTML into the mail item, then copy and paste to appt
m.BodyFormat = olFormatHTML
m.HTMLBody = Range("A1").Value 'sample HTML stored in a cell
m.GetInspector().WordEditor.Range.FormattedText.Copy
appt.GetInspector().WordEditor.Range.FormattedText.Paste
m.Close False 'don't save...
End Sub
Run Code Online (Sandbox Code Playgroud)
示例 HTML:
Sub SetApptWithHTMLContent()
Dim olapp As Outlook.Application, appt As Outlook.AppointmentItem
Dim m As Outlook.MailItem
Dim rtf() As Byte
Set olapp = New Outlook.Application
Set m = olapp.CreateItem(olMailItem)
Set appt = olapp.CreateItem(olAppointmentItem)
appt.Subject = "Meeting request"
'...set other appointment properties
appt.Display
'put the HTML into the mail item, then copy and paste to appt
m.BodyFormat = olFormatHTML
m.HTMLBody = Range("A1").Value 'sample HTML stored in a cell
m.GetInspector().WordEditor.Range.FormattedText.Copy
appt.GetInspector().WordEditor.Range.FormattedText.Paste
m.Close False 'don't save...
End Sub
Run Code Online (Sandbox Code Playgroud)
最终任命机构: