VBA 编写宏以更改工作簿名称中的数字



我想要一个在年初会发生变化的宏,例如,

Workbooks("cash 2014.xlsx").Worksheets("sum").Activate

Workbooks("cash 2015.xlsx").Worksheets("sum").Activate

我已经创建了在 2015 年 1 月 1 日给我 d = 2015 的步骤,以便我可以编写

y = "cash " & d & ".xlsx", which yields cash 2015.xlsx (with no quotes).

如果我然后写 工作簿(y)。工作表("总和")。激活或 工作簿("y")。工作表("总和")。激活Excel 不会运行任何一个。

VBA 也无法识别: 工作簿("现金"&d&".xlsx")。激活或 工作簿("现金"&"d"和".xlsx")。激活或 工作簿("'现金'&d&'.xlsx')。激活

您可以使用:

Workbooks("cash" & d & ".xlsx").Activate

y = "cash " & d & ".xlsx"
Workbooks(y).activate

如果你在变量周围加上引号,它们就会变成字符串,并被理解为dy

此外,最好为你的

变量想出名字,这样下一个必须维护你的代码的人就不会在你的新工作中追捕你,用一双筷子刺出你的眼球,同时对你大喊脏话。

如果您想分解旧名称并用新年重命名它,请尝试此操作。

只要表单是"AAAA ####.ext",名称和年份之间有一个空格。

这将采用旧名称,分解年份,添加一个,然后另存为新名称。

Sub RenameNewYear()
Dim oldPath As String, path As String, OldName As String, fileExt As String
Dim tempYear As Long, newYear As Long
Dim old() As String
Dim Filename As String, FileNPath As String
    path = ActiveWorkbook.path    'C:usersownerdesktop
    OldName = ActiveWorkbook.Name '"cash 2015.xlsm"   
    'Split original name up into sections.  
    old = Split(OldName, ".")     'old(0) = "cash 2014", old(1) = "xlsm"
    fileExt = "." & old(1)        '.xlsm
    old = Split(old(0), " ")      'old(0) = "cash", old(1) = "2014"
    tempYear = CLng(old(1))       '2014
    newYear = tempYear + 1        '2015
    Filename = (old(0) & " " & newYear & fileExt)   '"cash 2015.xlsm"
    FileNPath = path & "" & Filename           'C:usersownerdesktopcash 2015.xlsm
    ActiveWorkbook.SaveAs fileName:=FileNPath
    Sheets("sum").Activate
End Sub

要打开它,您可以使用以下内容: 但它已经打开了,因为最后一个代码保存为新名称。

Workbooks.Open Filename:=FileNPath

相关内容

最新更新