Нижеследующий код позволяет создать новую книгу 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

Полезные ссылки

Order_macros

Теги:
 

2 комментария в “Новая книга Excel из листов старой”

  1. Александр:

    В ряде случаев описанный программный код вызывает снижение быстродействия в среде Microsoft Excel 2010 (2013). Это происходит как в 32-х так и в 64-х разрядных средах исполнения. Решением может служить:
    1) вместо операции копирования ввести операцию создания нового листа
    2) выбрать диапазон копирования по старой книге и листу
    3) скопировать данные объекта в новый лист
    4)скопировать образец форматирования строк и столбцов
    5) применить форматирование на новом листе.

    Метод проверен и одинаково хорошо работает как в старых версиях Excel (2003-2007), так и в новых

  2. Александр:

    Прошу прощения за опечатку по п.3 решения: речь идет о копировании ячеек или небольшиз диапазонов. Допускается использовать массивы.

Комментировать