下面两个代码块的区别只是Outlook对象库的链接。在 Outlook 中,这不是必需的,但在 Word 中,您需要包含库作为对 Word 项目的引用,或者使用后期绑定(我在下面演示的方法)。
在这种情况下,后期绑定将 Outlook 库链接到代码/项目中的对象OLK
,并允许您使用关联的功能而无需执行任何额外的步骤/保存任何额外的文件。
链接库也应该可以,但是由于这不是您以后可以参考的普通 Word 项目/为每封新电子邮件创建一个新的 Word 项目,我在想(尽管我没有测试)您需要包括模板中的代码Normal
,这意味着该代码将在您创建的任何Word 文档中可用,除非您指定不同的模板。
这可能是也可能不是您想要做的,但如果是,那么只需将 Outlook 代码粘贴到您的Normal
模板中并将Outlook 库链接为参考。
从MS Outlook(首选方法)
当粘贴到 OUTLOOK 项目中时,即使使用 WORD 作为电子邮件编辑应用程序,这也将起作用:
Option Explicit
Sub Names()
Dim Atmt As Attachment
Dim Mensaje As Outlook.MailItem
Dim Adjuntos As String
Dim Body As String
Dim i As Integer
Set Mensaje = Application.ActiveInspector.CurrentItem
Mensaje.BodyFormat = olFormatHTML
Body = Mensaje.HTMLBody
i = 0
Adjuntos = ""
For Each Atmt In Mensaje.Attachments
'If Atmt.Size > 5 Then
Adjuntos = Adjuntos & "** Attached file: <u> " & Atmt.FileName & " </u> <br>"
i = i + 1
'End If
Next Atmt
Adjuntos = "<u> <b> Total number of attached files: " & i & "</u></b> <br>" & Adjuntos
Mensaje.HTMLBody = Left(Body, InStr(Body, "</body>") - 1) & Adjuntos & Right(Body, Len(Body) - InStr(Body, "</body>") + 4)
Set Mensaje = Nothing
End Sub
来自MS Word /在新邮件项目中
我能够完成以下工作,但您应该注意,我收到了安全警告(正常的、不可避免的 AFAIK),必须通过用户干预才能完成。
将以下内容粘贴到您的 WORD 项目中(打开邮件项目)并运行它。您还应该能够将其放入Normal
模板中,但这意味着宏将始终可用,这对您来说可能是也可能不是问题。
Sub Names()
Dim OLK As Object 'Oulook.Application
Dim Atmt As Object 'Attachment
Dim Mensaje As Object 'Outlook.MailItem
Dim Adjuntos As String
Dim Body As String
Dim i As Integer
Set OLK = CreateObject("Outlook.Application")
Set Mensaje = OLK.ActiveInspector.CurrentItem
Mensaje.BodyFormat = 2 'olFormatHTML
Body = Mensaje.HTMLBody
i = 0
Adjuntos = ""
For Each Atmt In Mensaje.Attachments
'If Atmt.Size > 5 Then
Adjuntos = Adjuntos & "** Attached file: <u> " & Atmt.FileName & " </u> <br>"
i = i + 1
'End If
Next Atmt
Adjuntos = "<u> <b> Total number of attached files: " & i & "</u></b> <br>" & Adjuntos
Mensaje.HTMLBody = Left(Body, InStr(Body, "</body>") - 1) & Adjuntos & Right(Body, Len(Body) - InStr(Body, "</body>") + 4)
Set OLK = Nothing
Set Mensaje = Nothing
End Sub