我想要一个年初变化的宏,例如,
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).Worksheets("和&#34)。激活, 要么 工作簿(" Y&#34)工作表("和&#34)。激活, Excel不会运行任何一个。
VBA也不承认: 工作簿(""现金"& d&" .xlsx"")。激活 要么 工作簿('"现金"& d&" .xlsx"')。激活 要么 工作簿("''& d&' .xlsx')。激活
答案 0 :(得分:0)
您可以使用:
Workbooks("cash" & d & ".xlsx").Activate
或者
y = "cash " & d & ".xlsx"
Workbooks(y).activate
如果您在变量周围加上引号,它们就会成为字符串,并且只是d
或y
此外,最好为您的变量设置名称,以便下一个必须维护您的代码的人不会在您的新工作中找到您,并用一对来刺伤您的眼球。筷子一边尖叫一边猥亵你。
答案 1 :(得分:0)
如果你想打破旧名称并用新年重命名,试试这个。
只要表格是" AAAA ####。\ text"名称和年份之间的空格。
这将采用旧名称,突破年份,添加一个,然后另存为新名称。
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