2015-01-06 53 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 
相關問題