下面两个代码块的区别只是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