Страницы
Контакты
Прочее
© 2016 Open Notes. При использовании материалов сайта ставьте ссылку на opennotes.ru
Нижеследующий код позволяет создать новую книгу Excel из листов текущей книги, содержащей макросы. Также удаляются ненужные кнопки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub ToNewFile() pathNewBook = "C:\Temp\" 'Путь сохранения новой книги nameNewBook = "Название книги (" & Format(Now, "MMMM YYYY") & ").xlsx" Application.ScreenUpdating = False Application.DisplayAlerts = False Application.SheetsInNewWorkbook = 1 'Количество листов в новой книге Set NewWB = Workbooks.Add ThisWorkbook.Activate Sheets("Лист 1").Copy Before:=NewWB.Sheets(1) NewWB.Sheets(2).Delete 'Удаляем кнопки NewWB.Sheets("Лист 1").Shapes.Range(Array("cbButtonName")).Delete NewWB.SaveAs Filename:=pathNewBook & nameNewBook NewWB.Close True 'Сохраняем Application.CutCopyMode = False If Dir(pathNewBook & nameNewBook) <> "" Then MsgBox "Создан файл: " & pathNewBook & nameNewBook Else MsgBox "Не удалось создать файл!" End If End Sub |
Sub ToNewFile() pathNewBook = "C:\Temp\" 'Путь сохранения новой книги nameNewBook = "Название книги (" & Format(Now, "MMMM YYYY") & ").xlsx" Application.ScreenUpdating = False Application.DisplayAlerts = False Application.SheetsInNewWorkbook = 1 'Количество листов в новой книге Set NewWB = Workbooks.Add ThisWorkbook.Activate Sheets("Лист 1").Copy Before:=NewWB.Sheets(1) NewWB.Sheets(2).Delete 'Удаляем кнопки NewWB.Sheets("Лист 1").Shapes.Range(Array("cbButtonName")).Delete NewWB.SaveAs Filename:=pathNewBook & nameNewBook NewWB.Close True 'Сохраняем Application.CutCopyMode = False If Dir(pathNewBook & nameNewBook) <> "" Then MsgBox "Создан файл: " & pathNewBook & nameNewBook Else MsgBox "Не удалось создать файл!" End If End Sub
В ряде случаев описанный программный код вызывает снижение быстродействия в среде Microsoft Excel 2010 (2013). Это происходит как в 32-х так и в 64-х разрядных средах исполнения. Решением может служить:
1) вместо операции копирования ввести операцию создания нового листа
2) выбрать диапазон копирования по старой книге и листу
3) скопировать данные объекта в новый лист
4)скопировать образец форматирования строк и столбцов
5) применить форматирование на новом листе.
Метод проверен и одинаково хорошо работает как в старых версиях Excel (2003-2007), так и в новых
Прошу прощения за опечатку по п.3 решения: речь идет о копировании ячеек или небольшиз диапазонов. Допускается использовать массивы.