52722


下記のページを参考に、「あさ」というフォルダ内の最新受信1件の添付ファイルを対象`(C:\保存フォルダ)` へ保存できるようにしようとしています。

<https://tonari-it.com/outlook-vba-mail-attachment-saveasfile/>  
<https://tonari-it.com/outlook-vba-subfolder-mail-attachmentfile/>

素人目で `Set objItem =` がフォルダ内の最新を選択できれば動くように感じますが、このままだと

[code]

    For Each objAttachment In .Attachments
    
[/code]

でエラーが出てしまいます。  
修正方法を教えていただきたいです。

ここからコード

[code]

    Sub SaveAttachmentFile()
    Dim objItem As Object
    Dim objIns As Inspector
    Dim strFile As String
    Dim strPath As String
    Dim objAttachment As Object
    
    Set objIns = Application.ActiveInspector
    Set myNamespace = GetNamespace("MAPI")
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set objItem = myInbox.Folders.Item("あさ")
    
    strPath = "C:\保存フォルダ\"
    
    With objItem
    
        For Each objAttachment In .Attachments
            strFile = strPath & objAttachment
            objAttachment.SaveAsFile strFile
        Next objAttachment
    End With
    
    End Sub
    
    
[/code]

コメントいただき、変更後

[code]

    Sub SaveAttachmentFile()
    Dim objItem As Object
    Dim objIns As Inspector
    Dim strFile As String
    Dim strPath As String
    Dim objAttachment As Object
    
    Set objIns = Application.ActiveInspector
    Set myNamespace = GetNamespace("MAPI")
    Set myInbox = myNamespace.GetDefaultFolder(olFolderInbox)
    Set objItem = myInbox.Folders.Item("あさ")
    strPath = "C:\保存フォルダ\"
    
    With objItem
    If .Attachments.Count = 0 Then
                MsgBox "メールに添付ファイルがありません。"
            End If
    
            strFile = strPath & .Attachments.Item(1)
        For Each objAttachment In .Attachments
            strFile = strPath & objAttachment
            objAttachment.SaveAsFile strFile
        Next objAttachment
    End With
    
    End Sub
    
[/code]


CC BY-SA 4.0
2019-02-12T05:23:39.110
52720
2019-02-12T09:10:03.123
2019-02-12T09:10:03.123
32143
32143
question
vba
outlook VBAを使用した最新メールの添付ファイルを特定のフォルダへ取り込む方法


「添付ファイルが無かった場合」が考慮されていないのが原因ではないでしょうか？

参考にされたサイトに掲載されているコードでは以下のようにチェックを行っています。

[code]

    Set objItem = Application.ActiveInspector.CurrentItem   '今開いているメールオブジェクトを取得
    
        With objItem
    
            '添付ファイルの数が0だったら処理終了
            If .Attachments.Count = 0 Then
                MsgBox　"メールに添付ファイルがありません。"
                Exit Sub
            End If
    
            strFile = strPath & .Attachments.Item(1)
    
[/code]


CC BY-SA 4.0
2019-02-12T05:35:53.547
52722
2019-02-12T05:35:53.547
3060
52720
answer