excel - 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
解决方案
代替 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 讨论以获取代码。
推荐阅读
- django - 存储 ChangeList 对象以便在以后的请求中访问
- java - 在 jsp 上加载报告需要太多时间,但在下载 Excel(POI)时却没有
- android - 如何使用 Android R8 保留类构造函数参数名称
- javascript - Jquery如何在另一个选择上更改选项后将选择选项文本设置回默认值
- lldb - LLDB 断点命令和完成
- eclipse - Ecilpse:“VM 参数”与“变量”(见图)
- android - 如何在 Ubuntu 中运行 arcore android 模拟器
- java - 如何覆盖平铺的 .tmx 文件?
- c# - .Net Core Web Application 远程共享布局或局部视图
- c++ - 如何强制两个函数参数具有相同的模板类型?