2015-01-06 3 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). 

Если я тогда пишу Workbooks (у) .W orksheets («sum»). Активировать, или Рабочие книги («y»). Рабочие листы («сумма»). Активировать, Excel не будет работать ни один.

VBA также не признает:. Рабочие книги ("" наличными "& д &" .xlsx "") Активировать или Workbooks (' "денежные" & д & ".xlsx"') Активировать . или Workbooks (" 'наличные деньги' & d & '.xlsx') Активировать

ответ

0

Вы можете использовать:.

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

или

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

Если поставить кавычки ваших переменных они становятся строками и intepreted как только d или y

Кроме того, это лучше придумать имена для переменных, так что следующий человек, который должен поддерживать ваш код не выслеживает вас на вашей новой работе и ударяет ваши глазные яблоки парой палочек для еды, пока вы кричите непристойности у вас.

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 
Смежные вопросы