Outlookはこの添付ファイルの形式でこのアクションを実行することができませんの原因と対処法!

Outlookはこの添付ファイルの形式でこのアクションを実行することができませんの原因と対処法!

VBAでOutlookを操作してメールを送信する際に、「この添付ファイルの形式でこのアクションを実行することができません」
というエラーが発生するときはありませんか?

今回は「この添付ファイルの形式でこのアクションを実行することができません」エラーの考えられる原因とその対処法について解説します。


エラーの主な原因

このエラーが発生する主な原因は、VBAでOutlookのメールにファイルを添付しようとした際、以下のいずれかの理由で添付が拒否されることが考えられます。

  • 1.添付ファイルの拡張子がブロックされている

    • Outlookにはセキュリティ対策として、特定の拡張子(.exe、.bat、.js
      など)の添付を禁止する仕組みがありVBAでこれらのファイルを添付しようとするとエラーが発生します。
  • 2.ファイルのパスが正しくない
    • VBAコード内で指定したファイルパスが間違っている、または存在しない場合にエラーが発生します。
  • 3.ファイルが使用中

    • 添付しようとしているファイルが他のプログラムで開かれていると、添付できない場合があります。
  • 4.Outlookのセキュリティ設定が影響している

    • Outlookのセキュリティポリシーによって、VBAからのファイル添付が制限されている場合があります。
  • 5.VBAのコードの書き方に問題がある

    • .Attachments.Add
      の使い方が誤っている可能性があります。

 

解決策

1. 添付ファイルの拡張子を確認する

添付しようとしているファイルが、Outlookでブロックされる拡張子かどうかを確認してください。

  • ブロックされる拡張子の一例
    .exe, .bat, .cmd, .js, .vbs, .scr, .msi, .reg, .dll など
  • 対処法
    • 一般的には該当の拡張子である場合はZIPファイルに圧縮して送ります。
    • 次にファイル名の拡張子を一時的に変更し、受信者に変更方法を伝えます。
    • 無難なのはクラウドストレージ(OneDriveやGoogle
      Drive)にアップロードし、リンクを共有する方法です。

2. ファイルパスを正しく指定する

VBAでファイルパスを指定する際に、フルパスを使用するようにしましょう。

以下コードを実行すると、事前にファイルパスの有無を確認できます。

Dim filePath As String
filePath = "C:\Users\Username\Documents\test.xlsx"

If Dir(filePath) = "" Then
    MsgBox "ファイルが存在しません: " & filePath
    Exit Sub
End If

3. ファイルが使用中かどうかを確認する

他のプログラム(ExcelやWordなど)で開かれているファイルは添付できないことがあります。

対策

VBAでファイルが開かれているかを確認し、閉じる処理を行いましょう。
以下のコードでファイルが開かれているか否かチェックすることができます。

On Error Resume Next
Open filePath For Binary Access Read Write Lock Read Write As #1
Close #1
If Err.Number <> 0 Then
    MsgBox "ファイルが使用中です。閉じてから再試行してください。"
    Exit Sub
End If
On Error GoTo 0

4. Outlookのセキュリティ設定を変更する

VBAによるメールの自動送信や添付ファイルの追加をブロックする設定が適用されている場合があります。

対処法

  • 「セキュリティセンター」から設定を変更
  1. Outlookを開く
  2. 「ファイル」→「オプション」→「セキュリティセンター」→「セキュリティセンターの設定」
  3. 「プログラムによる Outlookの自動操作」項目をチェックし、適切な設定にする
  • 管理者のポリシーによる制限

    • 組織のポリシーで制限されている場合、管理者に問い合わせる。

5. VBAコードの書き方を修正

添付処理に問題がある場合、コードの見直しを行います。

修正例

Sub SendMailWithAttachment()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim filePath As String

    ' Outlookアプリケーションを起動
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    ' 添付するファイルのパス
    filePath = "C:\Users\Username\Documents\test.xlsx"

    ' ファイルが存在するか確認
    If Dir(filePath) = "" Then
        MsgBox "添付ファイルが見つかりません: " & filePath, vbExclamation
        Exit Sub
    End If

    ' メール作成
    With OutMail
        .To = "test@example.com"
        .CC = ""
        .BCC = ""
        .Subject = "VBAからのテストメール"
        .Body = "このメールはVBAで送信されました。"
        
        ' 添付ファイル追加
        On Error Resume Next
        .Attachments.Add filePath
        If Err.Number <> 0 Then
            MsgBox "添付ファイルを追加できませんでした。" & vbCrLf & Err.Description, vbCritical
            Err.Clear
            Exit Sub
        End If
        On Error GoTo 0
        
        ' メール送信
        .Send
    End With

    ' 後処理
    Set OutMail = Nothing
    Set OutApp = Nothing

    MsgBox "メールが送信されました!", vbInformation
End Sub

このコードでは、ファイルが存在しない場合のエラーハンドリングOn Error Resume Nextを追加していて、
エラー発生時にメッセージ表示を表示させるようにしています。

まとめ

原因 対処法
添付ファイルの拡張子がブロックされている ZIP圧縮、拡張子変更、クラウド共有
ファイルパスが正しくない フルパスを確認・修正
ファイルが使用中 ファイルを閉じてから実行
Outlookのセキュリティ設定 セキュリティセンターの設定を変更
VBAのコードが誤っている .Attachments.Add
の使い方を確認し修正

今回は「この添付ファイルの形式でこのアクションを実行することができません」エラーの考えられる原因とその対処法について説明をしました。
エラーの原因に応じて適切な対処をすれば、スムーズにVBAでOutlookのメールにファイルを添付できるようになりまので、ぜひご参考ください。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。







コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA ImageChange Image