Как сохранить в базу форматирование листа.

Программирование на Visual Basic for Applications
Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Как сохранить в базу форматирование листа.

Сообщение Avtopic » 30.09.2006 (Сб) 13:27

Здравствуйте,
У меня непростой вопрос.
Хочу получить идею, как сохранить в базу форматирование определенного участка листа.
Т.Е. имею лист и на нем область доп. “A1:D200”, моя задача сохранить
.Borders(xlEdgeBottom).Weight и .Interior.ColorIndex для каждой ячейки в этой области
В другой раз сохранить другую область.

Ну, в цикле все сделано. Хочу более продвинутую идею. Может можно сохранить как-то в OLE а потом использовать опять же "как-то”.
Важнее всего в задаче стоит время извлечения этой информации из базы и форматирование листа соответственно этим данным из базы. Время сохранения неважно.
Если хорошо объяснил, Спасибо.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 30.09.2006 (Сб) 13:45

Имхо сохраняй весь лист и книгу с определенным форматированием, только у листа все значения в ячейках удаляй, а когда надо будет применить определенное форматирование - то копируй данные из листа без форматирования и делай "вставить только значения" на лист на котором уже есть форматирование (сохраненный ранее), потом страрый лист удаляй а новому присвой имя старого листа.
Хранение:
1-й вариант) Листы с форматированием можешь собрать в одной книге, а в базе хранить название листа и комментарий (описание) форматирования для каждого листа.

2-й вариант) Листы храни в той же книге что и работаешь (где ты хочешь применить автоматизацию), добавь кнопочку/меню "Сохранить форматирование" и по нажатию пользователь введет описание форматирования для этого листа, потом копируешь этот лист, очищаешь ячейки от значений, и делаешь его невидимым (лист не сможет отобразиться действиями пользователя через "Лист-отобразить", смотри свойство листа в VBA - Visible = 2-xlSheetVeryHidden). Описание форматирования и соответсвующий ему имя листа хранишь на другом скрытом листе, допустим с именем "Format", Создашь кнопку/меню "Применить форматирование" по нажатию на нее появляется список всех видов форматирования (берешь список с листа "Format"), при выборе делаешь соответствующий скрытый лист видимым, заполняешь его данными, переименовываешь, старый лист удаляешь.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 30.09.2006 (Сб) 14:13

2-ой вариант сразу не подходит, сохраненных вариантов будет очень много, соответственно и листов получится много.

Я, как написал выше, делаю сейчас, в цикле используя базу mdb. .База и так нужна в программе, она ее основа. Перенося охраненное форматирование из базы, на это в цикле уходит 325 мсек (в среднем).
По-моему доставать из базы книгу, копировать от туда форматирование, и вставлять, займет
больше, но обязательно попробую, спасибо.

Алексей К.
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 419
Зарегистрирован: 12.05.2004 (Ср) 9:41
Откуда: Ульяновск

Сообщение Алексей К. » 30.09.2006 (Сб) 14:48

на это в цикле уходит 325 мсек (в среднем).

да вроде не долго:) так что лучше не парся и не трать время:)
А если ради спортивного интереса то:
если при операции копировать -> специальная вставка->только формат твой формат нормально передается, то тогда может найдешь где-нибудь инфу по состоянию, фомату клипбоарда для этого режима (если такое вообще есть ). Если найдешь то и будешь хранить это содержимое в базе и потом программно применять спец. вставку "только формат"

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 30.09.2006 (Сб) 15:22

Алексей К. писал(а):
на это в цикле уходит 325 мсек (в среднем).

да вроде не долго:) так что лучше не парся и не трать время:)
Да, вроде бы недолго, но когда интенсивно работают с книгой, эти 0,3 сек + на другие операции, еще 0,2 сек, прямо через нервы в голову ударяет.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 03.10.2006 (Вт) 18:47

Продолжу в этой же теме. Более грустный вопрос.

Вместе c форматированием сохраняю в базу в поле OLE рисунок в бинарном виде.
Если рисунок находится в файле все нормально и кусочек кода, который получает бинарный код из файла и сохраняет его, такой:
Код: Выделить всё

            Open файл_с_рисунком  For Binary Access Read As #file_num
            ...
            Get #file_num, , bytes()
            rs!Picture.AppendChunk bytes()
            ...

Вопрос у меня такой:
Можно или нет, в bytes() получит бинарный код рисунка, если этот рисунок находится, в виде OLE объекта на листе Excel?
Только не советуйте, пожалуйста, сперва сохранить этот рисунок, а потом доставать из файла этот код.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.10.2006 (Ср) 12:18

Перестал поиски.
Если кому поможет:
в конце вопроса “Только не советуйте, пожалуйста, сперва сохранить этот рисунок, а потом доставать из файла этот код”, Приписал интуитивно, ожидая, что первым делом будут совета такого рода.
Оказывается как раз, в основном так и пользуются при сохранении и доставании изображения в базе в бинарном виде.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 04.10.2006 (Ср) 12:20

Можно и без временного файла, на форуме код минимум трижды выкладывался.
Lasciate ogni speranza, voi ch'entrate.

Avtopic
Постоялец
Постоялец
 
Сообщения: 442
Зарегистрирован: 30.09.2005 (Пт) 17:15
Откуда: Tbilisi

Сообщение Avtopic » 04.10.2006 (Ср) 17:20

Сума сойти, три дня ищу, не нашел. После вашего ответа с легким упреком,
первое же обсуждение нашел на эту тему. Спасибо вам и tyomitch-у за его JPEG.zip


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 55

    TopList