2015-01-06 42 views
0

我想在一年开始变化一个宏,将,例如,VBA编写宏改变了一些在工作簿名称

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

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

我已经创建步骤上1/1/2015会给我D = 2015年,让我可以写

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

如果我接着写 工作簿(Y).W orksheets(“sum”)。Activate, or Workbooks(“y”)。Worksheets(“sum”)。Activate, Excel将不会运行任何一个。

VBA还不能识别: 工作簿( “” 现金 “& d &” 的.xlsx “”)激活 或 工作簿( ' “现金” & d & “的.xlsx”')激活 。或 工作簿(“ '现金' & d & .xlsx等)激活

回答

0

您可以使用:

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

或者

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

如果你把周围的变量,他们成为串并intepreted刚刚dy

而且报价,最好拿出名称为您的变量,这样有旁边的人来维护在你的新工作中,代码不会让你失望,并用一双筷子刺出你的眼球,同时尖叫你的淫秽。

0

如果您想分解旧名称并将其重新命名为新的一年,请尝试此操作。

只要格式为“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 
相关问题