имеется древняя относительно большая (4М) сложная двоичная книга на 45 листов, с кучей имён, объектов, макросов, проверкой данных, с условным и специальным форматированием, группировками и пр. Не было разве что внешних связей. Вдруг понадобилось подружить её с другой системой и для этого конвертировать в *.xlsm, но пациент туда не хочет. Ошибка:
"Длина одной или нескольких формул в данной книге превышает допустимую длину, равную 8192 знакам. Чтобы обойти это ограничение, следует сохранить данную книгу в формате двоичной книги Excel"
В поисках источника файл раздербанен до 1 листа, причём вновь созданного. Удалены все родные листы, имена (в т.ч. скрытые), макросы. Но даже эта культя чем-то упирается и не идёт в *.xlsm. Осталось подозрение на содержимое папки External Links, но если его убрать, Excel падает на колени при попытке открыть и восстановить.
Есть идеи?
Уважаемые форумчане,
имеется древняя относительно большая (4М) сложная двоичная книга на 45 листов, с кучей имён, объектов, макросов, проверкой данных, с условным и специальным форматированием, группировками и пр. Не было разве что внешних связей. Вдруг понадобилось подружить её с другой системой и для этого конвертировать в *.xlsm, но пациент туда не хочет. Ошибка:
"Длина одной или нескольких формул в данной книге превышает допустимую длину, равную 8192 знакам. Чтобы обойти это ограничение, следует сохранить данную книгу в формате двоичной книги Excel"
В поисках источника файл раздербанен до 1 листа, причём вновь созданного. Удалены все родные листы, имена (в т.ч. скрытые), макросы. Но даже эта культя чем-то упирается и не идёт в *.xlsm. Осталось подозрение на содержимое папки External Links, но если его убрать, Excel падает на колени при попытке открыть и восстановить.
Это прокатывало с обрезанным примером, но не сработало на большом исходнике.
В итоге помогло:
1. Изменить расширение на *.zip 2. Открыть файл архиватором 3. Удалить файлы внешних ссылок в папке "ExternalLinks" и подпапке "rels", не удаляя сами папки (иначе Excel рухнет) 4. Вернуть оригинальное расширение 5. Открыть в Excel и разрешить восстановление
Это прокатывало с обрезанным примером, но не сработало на большом исходнике.
В итоге помогло:
1. Изменить расширение на *.zip 2. Открыть файл архиватором 3. Удалить файлы внешних ссылок в папке "ExternalLinks" и подпапке "rels", не удаляя сами папки (иначе Excel рухнет) 4. Вернуть оригинальное расширение 5. Открыть в Excel и разрешить восстановлениеAlmost
Вообще-то у Вас в этом файле 3140 скрытых имен Вот такой макрос делает все имена видимыми и на листе выводит те, длина которых более 8192 знаков [vba]
Код
Sub tt() With ThisWorkbook m_ = .Names.Count ' MsgBox "Кол-во имен - " & m_ For i = 1 To m_ .Names(i).Visible = 1 l_ = .Names(i).RefersToLocal If Len(l_) > 8192 Then k_ = k_ + 1 Cells(k_, 1) = .Names(i).NameLocal Cells(k_, 2) = "'" & l_ Cells(k_, 3) = Len(l_) End If Next i End With End Sub
[/vba] А вот такой удаляет те имена, которые можно (оставшиеся 9 штук можно удалить руками, а можно и не трогать, они не мешают) [vba]
Код
Sub ttt() With ThisWorkbook On Error Resume Next For i = .Names.Count To 1 Step -1 .Names(i).Delete Next i End With End Sub
Вообще-то у Вас в этом файле 3140 скрытых имен Вот такой макрос делает все имена видимыми и на листе выводит те, длина которых более 8192 знаков [vba]
Код
Sub tt() With ThisWorkbook m_ = .Names.Count ' MsgBox "Кол-во имен - " & m_ For i = 1 To m_ .Names(i).Visible = 1 l_ = .Names(i).RefersToLocal If Len(l_) > 8192 Then k_ = k_ + 1 Cells(k_, 1) = .Names(i).NameLocal Cells(k_, 2) = "'" & l_ Cells(k_, 3) = Len(l_) End If Next i End With End Sub
[/vba] А вот такой удаляет те имена, которые можно (оставшиеся 9 штук можно удалить руками, а можно и не трогать, они не мешают) [vba]
Код
Sub ttt() With ThisWorkbook On Error Resume Next For i = .Names.Count To 1 Step -1 .Names(i).Delete Next i End With End Sub