【发布时间】:2020-07-13 20:11:17
【问题描述】:
我有一些用于将子表单结果导出到 Excel 工作簿的代码。代码工作正常,只有一个小问题。如果我导出,excel 文件打开如果用户想要我打开。当打开此 Excel 文件并且用户想要再次执行导出时,我收到错误 1004。
产生此错误是因为文件已打开,并且新 Excel 对象要保存同名文件。我想要的是当这种情况发生时,只需取消所有内容并让用户知道他必须首先关闭这个先前创建的工作簿。这是我尝试过的:
If Err.Number = 1004 Then
MsgBox "Error. You have opened Excel file, that has same name as this file name should be. Please close that file first !", vbCritical
Cancel = True
Set wb = Nothing ' wb is wb=XcelFile.Workbooks.Add
Set XcelFile = Nothing ' Xcelfile is Xcelfile= New Excel.Application
End If
此代码有效,当用户关闭该文件时,可以执行导出 - 旧文件只是被覆盖。问题是 Excel 应用程序仍在 Windows 任务管理器中打开,因此 Excel 对象未正确关闭。
有人有更好的解决方案吗?
P.S.:我尝试在 Excel 的文件名中包含数字,这样它就不会是同名,但我无法修复它。
编辑:这是我尝试更改文件名的方法
Dim i as Integer
ExcelFilename = "RESULTS_" & Format(Date, "dd/mm/yyyy") & "_" & i & "_" & ".xlsx"
i = i + 1
当我再次运行代码时,“i”不会改变它的值。我怎样才能让它增加?这将解决我的问题...
【问题讨论】: