powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
10 сообщений из 10, страница 1 из 1
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36363272
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть файл , который в результате 5 летнего использования раздулся, постоянно глючит.
Проблема в востановлении состоит в том что скопировать формулы и текст из книги в книгу - не является проблемой, проблема в том что в книге более сотни именованных диапазонов и 50 листов с названиями состоящих как из руских так и английских букв.

Поэтому 2 вопроса:
Как создать новую книгу и создать в ней заданное количество листов и скопировать имена с листов в исходной книге?

Как перенести на пустые листы имена из исходной книги?
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36363319
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообщем то решить не трудно - пробежаться по коллекции имен в текущей книге и добавить с такими же именами и формулами (ссылками) в новую.
Код: plaintext
1.
2.
3.
4.
5.
Sub test()
Dim iName As Name
For Each iName In ActiveWorkbook.Names
 Workbooks("Книга2").Names.Add iName.Name, iName.RefersTo
Next iName
End Sub
Но возможно лучше почистить имеющийся файл все таки - удалить на всех листах все строки и столбцы ниже и правее используемых данных, проинвентаризировать имена (поудалять битые и неиспользуемые), если есть сводные таблицы - посмотреть чтобы не плодились Пивоты (debug.Print activeworkbook.pivotcaches.count должно быть столько же сколько используется исходных диапазонов для различных таблиц, а не больше) и т.д.
Впринципе если нет каких-то фатальных ошибок в файле (которые я объяснить не всегда могу), то книгу вполне реально освежить без необходимости пересоздания.
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36363514
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со вторым вопросом всё ясно, большое спасибо, но макрос работает только при условии совпадения названий листов.
А как бы полениться и автоматически создать пустые листы с названиями из исходного файла?
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36363768
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-KСо вторым вопросом всё ясно, большое спасибо, но макрос работает только при условии совпадения названий листов.
А как бы полениться и автоматически создать пустые листы с названиями из исходного файла?
Вы правда не знаете как листы переименовать?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Sub test()

Dim newWB As Workbook, iSheet As Worksheet, iName As Name
'в модуль исходной книги  
Set newWB = Workbooks.Add
newWB.Sheets.Add Count:=ThisWorkbook.Sheets.Count - newWB.Sheets.Count

For Each iSheet In ThisWorkbook.Sheets
 newWB.Sheets(iSheet.Index).Name = iSheet.Name
Next iSheet

For Each iName In ThisWorkbook.Names
 newWB.Names.Add iName.Name, iName.RefersTo
Next iName

End Sub
Если вы просто пытаетесь попользоваться чужими руками и при этом можете это сами, то пусть останется на вашей совести :).
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36365899
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще только учусь и главным образом на своих ошибках...А еще основная работа жмет...
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36365949
Фотография Dan-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В случае если копируется файл в котором есть листы по порядку с названием Лист1, Лист2, Лист3,...Лист7
то вылезает следующая проблема -
Например в файле 8 листов, Вначале генерируется файл с тремя листами по умолчанию, остальные Листы Лист 4-7 устанавливаются правее.
Копирование названий файла приводит к ошибке, когда листу присваивается имя совпадающее с другим именем листа в файле.

Как бы генерировать файл сразу с именами листов не совпадающими с именами в исходном файле?
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36374011
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-KВ случае если копируется файл в котором есть листы по порядку с названием Лист1, Лист2, Лист3,...Лист7
то вылезает следующая проблема -
Например в файле 8 листов, Вначале генерируется файл с тремя листами по умолчанию, остальные Листы Лист 4-7 устанавливаются правее.
Копирование названий файла приводит к ошибке, когда листу присваивается имя совпадающее с другим именем листа в файле.

Как бы генерировать файл сразу с именами листов не совпадающими с именами в исходном файле?Нужно создать новую книгу, в ней удалить все листы кроме 1-ого.
Ему присвоить имя 1-ого листа в копируемой книге.
Далее по одному добавлять лист и сразу-же их переименовывать в соответствии с именами листов в копируемой книге.
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36374092
Djon Player
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dan-K,

Вот наваял макрос, который создает чистую книгу и в нём создает листы с такими-же названиями как и в файле из которого запущен макрос.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
Option Explicit

Sub Копирование_списка_листов_в_новый_файл() 
 Dim wb As Workbook
 Dim wb1 As Workbook
 Dim sh1
 Dim i As Integer
 Dim sheetsCount As Integer
 
 Set wb = ThisWorkbook
 Set wb1 = Workbooks.Add
 
 Application.DisplayAlerts = False
       
 With wb1
 
   .Activate
   sheetsCount = .Sheets.Count
   If sheetsCount >  1  Then
     For i = sheetsCount To  2  Step - 1 
      .Sheets(i).Delete
     Next i
   End If
 
   Application.DisplayAlerts = True
   
   sheetsCount = wb.Sheets.Count
   
   On Error Resume Next
   
   For i =  1  To sheetsCount
    
    .Sheets(i).Name = wb.Sheets(i).Name
  
    If Err.Number =  9  Then
     Err.Clear
     'Добавим его.
     Set sh1 = wb1.Sheets.Add(After:=Worksheets(wb1.Sheets.Count))
     sh1.Name = wb.Sheets(i).Name
    End If
   
   Next i
 
 End With
 
 On Error GoTo  0 
 
End Sub
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36374760
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пара вариантов
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
Sub test()

Dim x As Integer, newWB As Workbook, i As Long, iName As Name
'в модуль исходной книги
x = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook =  1 
Set newWB = Workbooks.Add
Application.SheetsInNewWorkbook = x

newWB.Sheets( 1 ).Name = ThisWorkbook.Sheets( 1 ).Name
For i =  2  To ThisWorkbook.Sheets.Count
 newWB.Sheets.Add after:=newWB.Sheets(i -  1 )
 ActiveSheet.Name = ThisWorkbook.Sheets(i).Name
Next i

For Each iName In ThisWorkbook.Names
 newWB.Names.Add iName.Name, iName.RefersTo
Next iName

End Sub

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Sub test2()

Dim newWB As Workbook, i As Long, iName As Name
'в модуль исходной книги
Set newWB = Workbooks.Add

Do While newWB.Sheets.Count >  1 : newWB.Sheets.Delete: Loop

newWB.Sheets( 1 ).Name = ThisWorkbook.Sheets( 1 ).Name
For i =  2  To ThisWorkbook.Sheets.Count
 newWB.Sheets.Add after:=newWB.Sheets(i -  1 )
 ActiveSheet.Name = ThisWorkbook.Sheets(i).Name
Next i

For Each iName In ThisWorkbook.Names
 newWB.Names.Add iName.Name, iName.RefersTo
Next iName

End Sub
...
Рейтинг: 0 / 0
Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
    #36375009
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему то второй пример не последний вариант получился кода
Sub test2()

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Sub test2()

Dim newWB As Workbook, i As Long, iName As Name
'в модуль исходной книги
Set newWB = Workbooks.Add
Application.DisplayAlerts = False
Do While newWB.Sheets.Count >  1 : newWB.Sheets( 2 ).Delete: Loop
Application.DisplayAlerts = True

newWB.Sheets( 1 ).Name = ThisWorkbook.Sheets( 1 ).Name
For i =  2  To ThisWorkbook.Sheets.Count
 newWB.Sheets.Add after:=newWB.Sheets(i -  1 )
 ActiveSheet.Name = ThisWorkbook.Sheets(i).Name
Next i

For Each iName In ThisWorkbook.Names
 newWB.Names.Add iName.Name, iName.RefersTo
Next iName

End Sub
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Как создать пустую копию книги, но перенести ИМЕНОВАННЫЕ ДИАПАЗОНЫ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]