当目录中存在同名文件时,“对象_workbook的方法保存失败”

Posted

技术标签:

【中文标题】当目录中存在同名文件时,“对象_workbook的方法保存失败”【英文标题】:"Method saveas of object _workbook failed" when same name file present in directory 【发布时间】:2019-07-27 09:58:52 【问题描述】:

如果文件再次保存,我正在尝试将文件保存在目录中,出现 excel 消息。我是 vba 错误处理的新手,卡在这个项目代码中

如果按下“否”,则会给出主题错误。这是我的代码:

  Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)
    Dim x As String
    With Destwb

    On Error Resume Next

        .SaveAs TempFileName & FileExtStr, FileFormat:=FileFormatNum


       If Sheet1.Cells(2, 6) = "All" Then
Exit Sub
End If
'Destwb.Sheets("REC_INT").Range("A1").Select

If Not Sheet1.Cells(2, 6) = "All" Then
x = Sheet1.Range("L3")

        With OutMail
            .To = Sheet1.Cells(x, 3).Value
            .CC = Sheet1.Cells(x, 4).Value
            .BCC = ""
            .Subject = "Service Record"
            .Body = Sheet1.Cells(8, 7).Value
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            '.Send   'or use
            .Display
        End With
        On Error GoTo 0
        .Close savechanges:=False
    End If
    End With

    'Delete the file you have send
    'Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
    End With
    Application.Calculation = xlCalculationAutomatic
End Sub

为什么没有跳过错误?

【问题讨论】:

它应该给出错误,因为 VBA 无法保存它。你想跳过错误吗? 是来处理这个错误 在什么意义上处理?你想跳过它吗?问你一个不同的名字来保存?覆盖文件?您的问题不清楚。 是跳过它并继续使用代码,如果没有按下 将此行放在您的代码之上。 On Error Resume Next 【参考方案1】:

问题:

On Error Resume Next 在保存文件的行之后

这将继续代码而不保存文件。

解决方案:

Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)

Dim x As String

On Error Resume Next


With Destwb
       .Save True
       '.SaveAs TempFileName & FileExtStr, FileFormat:=FileFormatNum

If Sheet1.Cells(2, 6) = "All" Then
    Exit Sub

Else

    x = Sheet1.Range("L3")

        With OutMail
            .To = Sheet1.Cells(x, 3).Value
            .CC = Sheet1.Cells(x, 4).Value
            .BCC = ""
            .Subject = "Service Record"
            .Body = Sheet1.Cells(8, 7).Value
            .Attachments.Add Destwb.FullName
            'You can add other files also like this
            '.Attachments.Add ("C:\test.txt")
            '.Send   'or use
            .Display
        End With

On Error GoTo 0

        .Close savechanges:=False

End If
End With

    'Delete the file you have send
    'Kill TempFilePath & TempFileName & FileExtStr

    Set OutMail = Nothing
    Set OutApp = Nothing

    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
    End With

End Sub

【讨论】:

这样做不会附加我的文件;我不想保存而是通过邮件发送,我已经更新了剩余的代码... 您的代码中没有任何地方附加文件 Mate !,您也没有提到您是。编辑您的问题并清楚地解释您想要什么以及正在发生的事情。 刚刚编辑了代码抱歉延迟由于连接不良 如果你只想点击否,为什么会有那行代码?我会说摆脱它。 @UmarFarooq,尝试按F8 运行您的代码,即逐步进行,并说明您遇到问题的位置。

以上是关于当目录中存在同名文件时,“对象_workbook的方法保存失败”的主要内容,如果未能解决你的问题,请参考以下文章

Day5-1 cp mv和cat等查看命令

运行时错误“1004”:对象“_Workbook”的方法“SaveAs”失败

当存在同名的共享库时,如何强制链接静态库

Django下存在两个及其以上的APP时,不同APP下templates目录中同名.html文件造成冲突。

对象“_Workbook”的方法“SaveAs”失败

当存在同名的子命名空间时,如何在 c# 中引用完整的命名空间? [复制]