Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.10.2009, 11:18   #1
Alex19789
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 31
По умолчанию Разбить книгу

Уважаемые форумчане, возник ещё один вопрос, подскажите пожалуйста:
Есть книга, в ней 90 листов.
Открытие этой книги занимает очень долгое время (около 2-х минут).

Возможно-ли разбить её на 90 книг по 1-му листу согласно листам исходной книги с сохранением форматирования, связей и защиты листов исходной книги для каждой вновь полученной книги. Названия полученных книг должны совпадать с названиями листов исходной книги.
Это нужно для уменьшения времени открытия и сохранения книг.
Заранее благодарен.
Alex19789 вне форума Ответить с цитированием
Старый 05.10.2009, 15:17   #2
Alex19789
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 31
По умолчанию

Уважаемые форумчане!
Помогите пожалуйста, времени катастрофически не хватает!
Возможно-ли вообще решить такую задачу или же решение настолько просто, что вам не интересно...
Alex19789 вне форума Ответить с цитированием
Старый 05.10.2009, 15:29   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Решить задачу, конечно же, можно.
На форуме есть примеры (один из этих примеров делал я)

Сохранить форматирование - не проблема.
Со связями будет посложнее. Какие связи присутствуют? Между листами, или между книгами?
Защиту можно устанавливать на каждую из вновь созданных книг.
EducatedFool вне форума Ответить с цитированием
Старый 05.10.2009, 17:33   #4
Alex19789
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 31
По умолчанию

Связи присутствуют между книгами.
Alex19789 вне форума Ответить с цитированием
Старый 05.10.2009, 19:44   #5
Teslenko_EA
Участник клуба
 
Регистрация: 10.08.2009
Сообщений: 1,796
По умолчанию

Здравствуйте Alex19789.
Ваша задача может быть выполнена подобным кодом, предварительно открыв все файлы учавствующие в связи:
Код:
Const FPath = "C:\Folder\" ' папка назначения, обдумайте её расположение, т.к. все ссылки после "дробления" будут указывать на неё
Sub saveSheets()
Dim o As Object, XL As Workbook, s$
Set XL = ActiveWorkbook
If Len(Dir(FPath, vbDirectory)) = 0 Then makeDir FPath
ChDir FPath
    For Each o In Worksheets
        s = o.Name
        If Worksheets.Count = 1 Then
            XL.SaveAs Filename:=FPath + s + ".xls", FileFormat:=xlNormal
        Else
            Sheets(s).Move
            ActiveWorkbook.SaveAs Filename:=FPath + s + ".xls", FileFormat:=xlNormal
            Windows(XL.Name).Activate
        End If
   Next
End Sub
Sub makeDir(s$)
    MkDir s
End Sub
Евгений.

Последний раз редактировалось Teslenko_EA; 05.10.2009 в 19:53.
Teslenko_EA вне форума Ответить с цитированием
Старый 06.10.2009, 10:34   #6
Alex19789
Пользователь
 
Регистрация: 15.12.2008
Сообщений: 31
По умолчанию

Спасибо Teslenko_EA!
Всё работает, но есть некоторые проблемки: у меня в книге много диаграмм, на некоторых из них сбилось форматирование, а конкретно легенды (вместо названий рядов, которые нужно отображать в легенде, отображаются названия других рядов, которые отображать не нужно). Пример во вложении.
Вложения
Тип файла: rar Пример.rar (374.0 Кб, 11 просмотров)
Alex19789 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
разбить строку Ceprey Общие вопросы C/C++ 10 24.12.2009 20:47
Разбить на массив spein PHP 5 09.05.2009 20:11
Разбить на функции dma Помощь студентам 1 10.03.2009 07:21
Разбить на группы Romuald Microsoft Office Excel 2 04.11.2008 14:40
Разбить список на части fotobra Microsoft Office Excel 1 23.02.2008 03:13