【问题标题】:1004 error "Is it possible it was moved, renamed or deleted?"1004 错误“它是否可能被移动、重命名或删除?”
【发布时间】:2015-12-19 12:07:10
【问题描述】:

我的目标:让 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

【问题讨论】:

  • 文件名不能包含冒号。用别的东西代替它。

标签: vba excel date


【解决方案1】:

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

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

也许你可以试试这个:

ThisWorkbook.SaveCopyAs "c:\folder\" & Replace(ThisWorkbook.Name, ".xl", Format(Now(), "yyyy-mm-dd hhmm") & ".xl")

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

如果你想把它放在相对于当前文件位置的子文件夹中,那么使用这个:

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

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

希望对你有帮助

【讨论】:

    【解决方案2】:

    我设法解决了我的问题。我不想对第二个代码使用 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
    

    现在一切正常, 非常感谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-26
      • 2019-02-10
      • 2012-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-26
      • 2023-02-22
      相关资源
      最近更新 更多