Този урок ще покаже как да получите и зададете името на работната книга във VBA.
Можем да получим или зададем името на активната работна книга във VBA или да преминем през всички отворени работни книги в Excel и да получим или зададем името на всяка от тях с помощта на VBA цикъл.
Вземете име на работна книга
За да получим името на активната работна книга, трябва да използваме свойството name на обекта на работните книги.
12345 | Sub GetWorkbookName ()Dim strWBName As StringstrWBName = ActiveWorkbook.NameMsgBox strWBNameEnd Sub |
Ако трябваше да изпълним кода по -горе, ще видим на екрана да се появи съобщение с името на активната работна книга.
За да преминем през всички активни работни книги и да върнем имената на работните книги в Excel, можем да изпълним следния код:
1234567 | Sub GetWorkbookNames ()Dim wb Като работна книгаЗа всяка wb в работни книгиActiveCell = wb.NameActiveCell.Offset (1, 0) .ИзберетеСледващияEnd Sub |
Примерите по -горе ще включват разширението на файла (напр. Xlsx). Ако не искате да включите разширението, има няколко метода, които можем да използваме, за да получим само името на файла на работната книга.
Вземете име на работна книга без разширение
Можем да използваме функциите LEFT и INSTR, за да премахнем всички символи след точката в името на файла:
12345 | Sub GetWorkbookName ()Dim strWBName As StringstrWBName = Вляво (ActiveWorkbook.Name, InStr (ActiveWorkbook.Name, ".") - 1)MsgBox strWBNameEnd Sub |
Можем да използваме функциите LEFT и LEN, за да премахнем 5 знака от края на името на файла:
12345 | Sub GetWorkbookName ()Dim strWBName As StringstrWBName = Вляво (ActiveWorkbook.Name, Len (ActiveWorkbook.Name) - 55)MsgBox strWBNameEnd Sub |
Задаване на име на работната книга
За да зададем името на работна книга във VBA, все още използваме свойството Name на работната книга, но не можем да използваме този метод за промяна на името на активната работна книга. Това се дължи на факта, че активната работна книга е отворена и ще възникне грешка при достъп до файл. За да преодолеем това, можем да запишем файла с ново име и след това да изтрием стария файл.
12345678910 | Публичен подмножествоWorkbookName ()Dim strPath As StringDim strNewName As StringDim strOldName As StringstrOldName = ActiveWorkbook.NamestrNewName = InputBox ("Моля, въведете ново име за работна книга")strPath = ActiveWorkbook.PathActiveWorkbook.SaveAs strPath & "/" & strNewNameУбийте strPath & "/" & strOldNameEnd Sub |
За да преименуваме работна книга, която не е отворена, можем да използваме метода Name.
123 | Public Sub RenameWorkbook ()Име "C: \ Data \ MyFile.xlsx" Като "C: \ Data \ MyNewFile.xlsx"End Sub |