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

Excel vba编写宏以更改工作簿名称中的数字,excel,concatenation,filenames,renaming,vba,Excel,Concatenation,Filenames,Renaming,Vba,我想要一个在一年开始改变的宏,例如 Workbooks("cash 2014.xlsx").Worksheets("sum").Activate 到 我已经创建了2015年1月1日将给我d=2015的步骤,这样我就可以写了 y = "cash " & d & ".xlsx", which yields cash 2015.xlsx (with no quotes). 如果我写 Workbooksy.worksheetsum.Activate, 或 Workbooksy.wor

我想要一个在一年开始改变的宏,例如

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

我已经创建了2015年1月1日将给我d=2015的步骤,这样我就可以写了

y = "cash " & d & ".xlsx", which yields cash 2015.xlsx (with no quotes).
如果我写 Workbooksy.worksheetsum.Activate, 或 Workbooksy.worksheetsum.Activate, Excel不会运行任何一个

VBA也无法识别: WorkbookCash&d和.xlsx.Activate 或 工作簿“现金和存款及xlsx”。激活 或 工作簿'cash'&d&'xlsx'。激活

您可以使用:

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

如果在变量周围加上引号,它们就会变成字符串,并被解释为d或y


此外,最好为变量命名,这样下一个需要维护代码的人就不会在你的新工作中找到你,用筷子刺穿你的眼球,同时对你大喊大叫。

如果你想打破旧名称,用新的一年来重新命名,试试这个

只要表单是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:\users\owner\desktop
    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:\users\owner\desktop\cash 2015.xlsm

    ActiveWorkbook.SaveAs fileName:=FileNPath
    Sheets("sum").Activate
End Sub
Workbooks.Open Filename:=FileNPath
要打开它,您可以使用:但是它已经打开了,因为最后一个代码保存为新名称

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:\users\owner\desktop
    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:\users\owner\desktop\cash 2015.xlsm

    ActiveWorkbook.SaveAs fileName:=FileNPath
    Sheets("sum").Activate
End Sub
Workbooks.Open Filename:=FileNPath