从同一位置以动态日期另存为文件

时间:2018-11-02 07:27:25

标签: excel vba 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

我的错误是

  

运行时错误1004
  对象'_Workbook的方法'SaveAs'失败。

过程将是:

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

  2. 单击文件以打开带有默认表的样本表

  3. 运行循环,直到使用默认数据粘贴了从1到30的所有图纸

  4. 宏将结束循环

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

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

1 个答案:

答案 0 :(得分:1)

至少三件事

  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