1004错误"它是否可能被移动,重命名或删除?"

时间:2015-09-22 13:24:58

标签: excel vba excel-vba date

我的目标:让Excel将工作簿的副本保存在与工作簿所在的原始文件夹不同的文件夹中,并保存时间戳。

此代码正确运行:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.SaveCopyAs Replace(ThisWorkbook.FullName, ".xlsm", "  _
  (" & Format(Now, "yyyy-mm-dd hhmm") & ").xlsm")
End Sub

但是这段代码根本没有运行。每次关闭工作簿时都会收到错误1004:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.SaveCopyAs (ThisWorkbook.Name & Format(Now, "yyyy-mm-dd hh:mm"))
End Sub

尝试使用第二个代码关闭工作簿时收到的消息:http://prntscr.com/8iiyyd

2 个答案:

答案 0 :(得分:2)

冒号阻止Windows保存文件,加上扩展名会很奇怪,加上这样的时间戳。 您的代码将生成以下文件名: Try.xlsm2015-09-22 15:37

您还需要提供文件夹位置。

也许你可以试试这个:

ThisWorkbook.SaveCopyAs" c:\ folder \" &安培;替换(ThisWorkbook.Name," .xl",格式(现在()," yyyy-mm-dd hhmm")&" .xl")

您当然可以指定自己的文件夹。

如果要将其放在相对于当前文件位置的子文件夹中,请使用以下命令:

ThisWorkbook.SaveCopyAs Thisworkbook.Path & "\subfolder\" & Replace(ThisWorkbook.Name, ".xl", Format(Now(), "yyyy-mm-dd hhmm") & ".xl")

您当然可以指定自己的子文件夹

希望这有帮助

答案 1 :(得分:1)

我设法解决了我的问题。我不想在第二个代码中使用Replace(我希望用另一个代码实现相同的功能)。

这是修复后的代码:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
  ThisWorkbook.SaveCopyAs "C:\Users\Korisnik\Box Sync\" & Format(Now, "yyyy-mm-dd hhmm") & ThisWorkbook.Name
End Sub

现在一切正常, 非常感谢

相关问题