excel - 从同一位置另存为具有动态日期的文件

标签 excel vba

我在下面处理的代码中遇到错误。

Sub Pasting
    Dim o as integer
    Dim i as integer
    Dim v as String

    o = 1
    i = 0

    Sheets("Sample").Visible = True
    Sheets("Sample").Select

    Do While i < 1
        Range("A:AA").Select
        Selection.Copy

        ActiveSheet.Next.Select
        On Error Goto PE

        Range("A1").Select
        Application.DisplayAlerts = False
        ActiveSheet.Paste
        Application.DisplayAlerts = True
    Loop

PE:
    Application.CutCopyMode = False
    Sheets("Sample").Visible = False
    Sheeets("Overall").Select

    v = "Sample File" & Format(DateAdd("m",1,Now), "Mmmm yyyy") & ".xlsb"
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & v
End Sub

我的错误是

Run-Time Error 1004
Method 'SaveAs' of object'_Workbook Failed.

流程是:

  1. 您将打开上个月的上一个文件

  2. 单击文件打开包含默认表格的示例表

  3. 运行循环,直到 1 到 30 的所有工作表均已使用默认数据粘贴

  4. 宏将结束循环

  5. 宏会将文件保存为与新月份相同位置的相同文件类型。

  6. 关闭文件并覆盖错误消息。

最佳答案

至少三件事

  1. 您应该使用工作簿名称/变量而不是 ActiveWorkbook 以避免意外使用错误的工作簿。我从你的代码中看不到 ActiveWorkbook 来自哪里。一种危险可能是它无意中成为ThisWorkbook
  2. 如果 ThisWorkbook 尚未保存,则 ThisWorkbook.Path 将为“”,并且您将收到错误
  3. 您应该在保存时指定 xlsb 的文件格式(尽管如果已经是 xlsb 则不会出现错误)

VBA:

Dim v As String
v = "Sample File" & Format(DateAdd("m", 1, Now), "Mmmm yyyy") & ".xlsb"
ActiveWorkbook.SaveAs ThisWorkbook.Path & "\" & v, FileFormat:=50

关于excel - 从同一位置另存为具有动态日期的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53114301/

相关文章:

excel - 如何在 excel vba 中查找和评论大数据的重复项?

sharepoint - 使用 XMLHTTP 删除 Sharepoint 文件

excel - VBA:完成矩阵

vba - 如果自动过滤器已经打开,如何使用 if 语句将其关闭,否则关闭

VBA 奇数/模数

excel - Microsoft Excel 以日期格式复制和粘贴

excel - 我可以通过 vba 设置 Excel Power Query 的用户名和密码吗?

excel - VBA Excel 查找所有不符合序列要求的行并清除

VBA Excel : Concatenate a range of cells

javascript - Excel VBA 单击由 javascript 控制的表格中的单元格