以下の2つのコードブロックの違いは、単にOutlookオブジェクトライブラリのリンクです。Outlookでは、これは必須ではありませんが、Wordからは、Wordプロジェクトへの参照としてライブラリを含めるか、遅延バインディングを使用する必要があります(以下に示す方法)。
この場合、遅延バインディングはOutlookライブラリをコード/プロジェクト内のオブジェクトにリンクし、OLK
追加の手順を実行したり、追加のファイルを保存したりすることなく、関連する機能を使用できるようにします。
ライブラリのリンクも機能するはずですが、これは後で参照できる通常のWordプロジェクトではないため、新しいメールごとに新しいWordプロジェクトが作成されるため、(テストはしていませんが)含める必要があると考えています。テンプレート内のコード。これは、別のテンプレートを指定しない限り、作成するすべてのWordドキュメントNormal
でコードを使用できることを意味します。
これはあなたがやりたいことかもしれないし、そうでないかもしれませんが、そうなら、OutlookコードをNormal
テンプレートに貼り付けて、Outlookライブラリを参照としてリンクします。
MS Outlookから(推奨される方法)
これは、電子メール編集アプリケーションとしてWORDを使用している場合でも、OUTLOOKプロジェクトに貼り付けると機能します。
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
MSWordから/新着メール内
私は以下を機能させることができましたが、ユーザーの介入によってプッシュされなければならないセキュリティ警告(通常の、避けられない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