首页 > 解决方案 > VBA 无法打开包含动态名称的备份文件

问题描述

VBA 新手,没有以前的编码经验。

由于新文件中运行的宏存在问题,我正在使用 SaveCopyAs 创建备份副本以将扩展名更改为 .xlsx。此代码可以正确创建备份文件,但是当我尝试打开这个新文件时,我收到运行时错误“1004”对象“工作簿”的“打开”方法失败。

我试过用几种不同的方式写这个,但没有运气。我认为这是导致问题的动态部分。请告知打开新文件需要做什么。

Sub Refresh()

Dim currwbk As Workbook
Dim FilePath As String
Dim newFileName As String

FilePath = ThisWorkbook.Path
T = Format(Now, "mmm dd yyyy hh mm ss")

Set currwbk = Workbooks("467_Report_Active.xlsm")

Application.ScreenUpdating = False

newFileName = FilePath & " " & T & ".xlsx"

Application.DisplayAlerts = False
    currwbk.SaveCopyAs newFileName
Application.DisplayAlerts = True

Workbooks.Open (newFileName)
End Sub

标签: excelvba

解决方案


代替 SaveCopyAs 使用 SaveAs 以及扩展代码。我试过这个,它对我有用。

文件格式代码:

51 = xlOpenXMLWorkbook(2007-2016 年没有宏,xlsx)

52 = xlOpenXMLWorkbookMacroEnabled(2007-2016 年有或没有宏,xlsm)

50 = xlExcel12(2007-2016 年的 Excel 二进制工作簿,有或没有宏,xlsb)

56 = xlExcel8(Excel 2007-2016 中的 97-2003 格式,xls)

参考链接:

代码:

Sub Refresh()

Dim currwbk As Workbook
Dim FilePath As String
Dim newFileName As String

FilePath = ThisWorkbook.Path
T = Format(Now, "mmm dd yyyy hh mm ss")

Set currwbk = Workbooks("467_Report_Active.xlsm")

Application.ScreenUpdating = False

newFileName = FilePath & " " & T & ".xlsx"

Application.DisplayAlerts = False
    currwbk.SaveAs Filename:=newFileName, FileFormat:=51
Application.DisplayAlerts = True

Workbooks.Open (newFileName)
End Sub

Set currwbk = Workbooks("467_Report_Active.xlsm")此外,您可以简单地分配此工作簿对象,而不是使用 中的实际文件Set currwbk = Thisworkbook名,这样如果将来有更改,您就不需要更新文件名。

编辑:如果您希望源工作簿即使在使用新文件名保存并打开它之后仍处于打开状态 - 请检查此stackoverflow 讨论以获取代码。


推荐阅读