2

我希望有人可以帮助我。几个月前,我能够为 Outlook 2003 编写一个宏来添加电子邮件中所有附件的文件名,这是我工作中真正需要的。

但是,如果我将默认编辑器切换到 Word,宏甚至不会出现;我想它必须合并到 Word 的 normal.dot 或其他东西中。如果我将它从 Word 添加到 VB,我可以看到宏,但我得到了各种各样的错误。

希望有人可以为我指出正确的方向。我当前的宏适用于“普通”Outlook 邮件(不是使用 Word 编辑器创建的邮件)是这样的:

Sub Names()

Dim Atmt As Attachment
Dim Mensaje As Outlook.MailItem
Dim Adjuntos As String


Set Mensaje = Application.ActiveInspector.CurrentItem
Mensaje.BodyFormat = olFormatHTML
i = 0
Adjuntos = ""

For Each Atmt In Mensaje.Attachments
    'If Atmt.Size > 5 Then
    Adjuntos = "<HMTL> ** Attached file: <u> " & Atmt.FileName & " </u> </html> <br>" & vbNewLine & Adjuntos
    i = i + 1
    'End If
Next Atmt

Adjuntos = "<HMTL> <u> <b> Total number of attached files: " & i & "</u></b> </html> <br>" & Adjuntos & vbNewLine

Mensaje.HTMLBody = Adjuntos & Mensaje.HTMLBody

Set Mensaje = Nothing

End Sub
4

1 回答 1

1

下面两个代码块的区别只是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
于 2012-08-03T16:46:43.460 回答