基于 3 个单元格值保存启用宏的工作簿

问题描述 投票:0回答:1

我正在尝试添加代码来保存基于 3 个单元格值的工作簿。一点背景知识,我们工作中有一个计划员,我们需要进行日常备份,或者根据需要进行复制,而不改变工作簿的原始副本。我尝试了几个代码,但是运气不佳。

单元格 A2 示例“05-2024” 单元格 B2 示例“规划器” 单元格 C2 是时间戳 =NOW() *日期和时间格式自定义为显示 mm-dd hhmm 或 05-08 1200

Sub SaveWorkbookAsXlsm()
    Dim wb As Workbook
    Dim folderPath As String
    Dim fileName As String
    Set wb = ActiveWorkbook
    folderPath = "C:\Art\"
    fileName = wb.Sheets("Sheet1").Range("A2").Value & "_" & _
               wb.Sheets("Sheet1").Range("B2").Value & "_" & _
               wb.Sheets("Sheet1").Range("C2").Value & ".xlsm"
    wb.SaveAs fileName:=folderPath & fileName, FileFormat:=52
End Sub

有更好的方法吗?

我尝试了上面的代码,它不起作用。我正在尝试保存基于单元格 A2、B2 和 C2 的工作簿。当我们开始新的一个月时,我们会创建一份计划表的副本,并将其命名为 05-2024 Planner。我们需要定期保存日期和时间的备份。我正在尝试对工作簿进行编码以根据单元格值进行保存以简化过程。

excel vba save
1个回答
0
投票
  • 使用
    SaveCopyAs
    将工作簿的副本保存到文件中,但不会修改内存中打开的工作簿。
    SaveAs
    是另一种方法。它将更改 Excel 中的工作簿。

微软文档:

Workbook.SaveCopyAs 方法(Excel)

Workbook.SaveAs 方法(Excel)

  • 可以即时创建时间戳(根据需要修改时间格式)。单元格 C1 不是必需的。
Sub SaveWorkbookAsXlsm()
    Dim wb As Workbook
    Dim folderPath As String
    Dim fileName As String
    Set wb = ActiveWorkbook
    folderPath = "C:\Art\"
    With wb.Sheets("Sheet1")
        fileName = .Range("A2").Value & "_" & _
                   .Range("B2").Value & "_" & _
                   Format(Now(), "mm-dd hhmmss") & ".xlsm"
    End With
    wb.SaveCopyAs FileName:=folderPath & fileName
End Sub
  • 如果备份副本的文件名(A1&B1)与主工作簿相同,则代码可以简化如下。单元格 A1 和 B1 也不是必需的。
Sub SaveWorkbookAsXlsm()
    Dim wb As Workbook
    Dim folderPath As String
    Dim fileName As String
    Const EXT_NAME = ".xlsm"
    Set wb = ActiveWorkbook
    folderPath = "C:\Art\"
    fileName = Replace(wb.Name, EXT_NAME, "_" & Format(Now(), "mm-dd hhmmss") & EXT_NAME)
    wb.SaveCopyAs FileName:=folderPath & fileName
End Sub
© www.soinside.com 2019 - 2024. All rights reserved.