vba将excel文件另存为?

时间:2017-01-12 13:04:50

标签: excel vba

我正在尝试使用vba保存excel文件。 这是我的代码:

Sub Save()
With ActiveWorkbook
 On Error GoTo message
.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range(C5).Value & " - " & Range(C6).Value & ".xls", FileFormat:=56
message:
MsgBox "There is an error"
End With
End Sub

由于某种原因,代码不会保存文件,代码默认为错误。请有人告诉我我做错了什么?

编辑:

实际的excel错误是对象全局失败的方法范围

2 个答案:

答案 0 :(得分:0)

错误是由你写的c5而不是“c5”引起的,所以它正在寻找一个以c5的值命名的范围,它是空的,并且没有Range,称为空。 试试这个:

Sub Save()
    ActiveWorkbook.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56
End Sub

此外,您不需要复杂的错误处理,因为默认行为与您要求的相同:带有一些描述的消息框。所以我也删除了它。但是,如果要执行其他操作来处理错误,则应在错误处理程序的标签之前编写Exit Sub,否则即使成功也会显示错误消息。您还应该恢复错误处理,如下所示:

Sub Save()
    On Error GoTo message
    ActiveWorkbook.SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56
    On Error GoTo 0
    Exit Sub
message:
    On Error GoTo 0
    MsgBox "There is an error"
End Sub

答案 1 :(得分:0)

您需要使用"调整范围并添加Exit Sub以防止调用message:在不需要时显示msgbox。

Sub Save()
     With ActiveWorkbook
         On Error GoTo message
         .SaveAs "G:\BUYING\Food Specials\2. Planning\6. Themes and Seasonal\Christmas\2017\Volume Planning\Volume overviews\SOSP\Ambient Volumes\#" & Range("C5").Value & " - " & Range("C6").Value & ".xls", FileFormat:=56
         Exit Sub
         message:
         MsgBox "There is an error"
    End With
End Sub