You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Outlook VBA保存指定附件提示对象变量或With块未设置如何处理

问题原因

你已声明objAtt为Outlook.Attachment类型的对象变量,但从未给该变量绑定具体的附件实例,直接调用SaveAsFile方法就会触发「Object variable or With block variable not set」报错。

修正方案

在匹配到附件名为CID.csv的逻辑下,先给objAtt赋值,绑定当前循环到的附件对象即可。同时对代码冗余和变量拼写问题做了优化,修正后完整代码如下:

Public Sub saveAttachtoDisk(item As Outlook.MailItem)

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
Dim strFileName As String
Dim STRFileExists As String
Dim EmAttFile As String
Dim i As Long
Dim AttachCount As Long

On Error GoTo ErrHandler

saveFolder = "\\page\data\NFInventory\groups\CID\Schedules\Nightly File Schedules\Deb's File Autosave\Extra Packs"
strFileName = saveFolder & "\CID.csv"
STRFileExists = Dir(strFileName)

Set EmAttach = item.Attachments
AttachCount = EmAttach.Count
    
For i = AttachCount To 1 Step -1
    EmAttFile = EmAttach.Item(i).FileName
    If EmAttFile = "CID.csv" Then
        ' 给objAtt绑定当前匹配到的附件实例
        Set objAtt = EmAttach.Item(i)
        
        ' 旧文件存在则先删除
        If STRFileExists <> "" Then
            Kill strFileName
        End If
        ' 保存新附件
        objAtt.SaveAsFile strFileName
        ' 匹配到目标后直接退出循环,无需继续遍历
        Exit For
    End If
Next i

ErrHandler:
If Err.Number <> 0 Then
    MsgBox "Error Number:" & Err.Number & vbCrLf & _
      "Error Description: " & Err.Description
    Exit Sub
End If
End Sub

内容的提问来源于stack exchange,提问作者Deke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:39:00