Страницы: 1
RSS
Переименование файла макросом
 
Доброго дня всем любителям Excel!!!  
Подскажите пожалуйста, может ли макрос переименовать свой же единственно открытый файл Excel?    
Или хотя бы, если макрос был выполнен, при закрытии предлагалось бы переименовать.  
Присваиваемое имя находится в ячейках листа.  
Поиском нашёл только переименование других файлов JIF и JPG.  
Благодарен заранее!
 
Думаю, что открытый файл переименовать не получится. Варианты:  
- Сохранить Как, а оригинал удалить;  
- Переименовывать закрытый файл.
 
Я себе такой макрос писал (для 2003)  
 
Sub Переименовать_книгу()  
     
'переименование текущей книги. сохраняется в той же папке под новым именем.  
 
   OldName = ActiveWorkbook.FullName  
   NewName = InputBox("Введите новое название?", "Переименование книги", Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)) & ".xls"  
   If NewName = ".xls" Then Exit Sub  
   ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NewName  
   Kill OldName  
End Sub
 
Поскольку делал для себя, то нет проверки "от дурака"  
1. будет неправильно работать с новыми файлами (еще не сохраненными)  
2. еще бы я добавил проверку, находится ли файл в общем доступе  
3. в 2007 и 2010 будет неправильно работать
 
Спасибо! У меня 2003, классно работает. С новыми файлами мне и не надо работать.  
Вот только хотелось бы, чтобы имя не вручную вводить, а сразу бралось из ячеек.  
Типа строчка:  
 
NewName = Sheets("Лис1").[A1] & ".xls"
 
Но так почему-то не работает, опять InputBox выскакивает...  
Подскажите, как грамотно сделать?
 
Закомментируйте строку NewName = InputBox(...  
И, наверное, ("Лис1") поменять на ("Лист1")? :-)
 
Спасибо, Юрий!  
Сделал, как сказали, эта строка проходит:  
 
If NewName = Sheets("Лист1").[A1] & ".xls" Then Exit Sub
 
но ошибка 1004 возникает в предпоследней строке кода:  
 
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NewName  
 
Пишет - Доступ к файлу невозможен. (в ячейке A1 yfgbcfyj слово Буря для примера).
 
Разлогинился.  
В ячейке A1 для записано слово Буря для примера.
 
Вы не там заменили строчку :)  
вот так должно получиться  
 
Sub Переименовать_книгу()  
   OldName = ActiveWorkbook.FullName  
   NewName = Sheets("Лист1").[A1] & ".xls"
   If NewName = ".xls" Then Exit Sub  
   ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NewName  
   Kill OldName  
End Sub
 
Вот это да! То, что надо. Благодарю, Haken!!!  
Хотел уточнить для общего развития. Если новое имя файла такое же, как существующее, то в окне спрашивается Заменить или нет.  
Выбираешь Да, ошибка в строке  
Kill OldName  
выбираешь Нет - в строке    
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NewName  
Как можно этого избежать?
 
Sub Переименовать_книгу()  
OldName = ActiveWorkbook.FullName  
NewName = Sheets("Лист1").[A1] & ".xls"
If NewName = ".xls" Or NewName = ActiveWorkbook.Name Then Exit Sub  
ActiveWorkbook.SaveAs Filename:=ActiveWorkbook.Path & "\" & NewName  
Kill OldName  
End Sub
 
Премного благодарен!  
Опять меня здесь в очередной раз выручили.  
Вопрос исчерпан.
Страницы: 1
Читают тему
Наверх