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

以下の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
于 2012-08-03T16:46:43.460 に答える