![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
4) Cтеганографический подход
![]() Берём классический пустой .gif размером в 1 точку. Дописываем ему в хвост в бинарном виде: a) строку фиксированной длины, предварительно заполненную кодом &H0 с именем сохраняемого файла b) cам сохраняемый файл Вставляем этот gif на рабочий лист обычным образом ( Что бы жизнь не казалась мёдом, можно поместить этот gif не на лист а в пользовательскую форму. У меня EXCEL 2010 сейчас без проблем поместил gif c прицепленным 12 МB архивом. В этом случае доступ к данным для сохранения придётся делать через Clipboard и gif или bmp файлы формировать более хитрым способом ![]() Для распаковки: a) сохраняем книгу как WEB страницу и обрабатываем файлы в папке xxx...x.files b) читаем прямым доступом оригинальное имя файла c) отрезаем лишний префикс Если хочется распаковывать файлы по одиночке придётся повозиться с CLIPBOARD Последний раз редактировалось Aent; 20.01.2010 в 17:38. |
![]() |
![]() |
![]() |
#12 |
Регистрация: 15.01.2010
Сообщений: 6
|
![]()
Дико, но симпатишно
![]() Спасибо. |
![]() |
![]() |
![]() |
#13 |
Форумчанин
Регистрация: 06.01.2010
Сообщений: 292
|
![]()
Возможно это не возможно, но мне говорили, что как-то возможно делать запрос в Аксес через OLEObjects.
У когото было что-то подобное на практике? |
![]() |
![]() |
![]() |
#14 |
Регистрация: 15.01.2010
Сообщений: 6
|
![]()
ИМХО это тормозить будет очень.
Кстати 4 вариан не работает, при пересылке xls файла, вложенный gif портится. ![]() Последний раз редактировалось wendigo; 21.01.2010 в 17:00. |
![]() |
![]() |
![]() |
#15 |
Форумчанин
Регистрация: 17.07.2009
Сообщений: 519
|
![]()
Да. Как выяснилось Excel умный и при пересохранении иногда поправляет gif.
Пересылка файла тут не причём. Важно пересохранение. Бороться с этим можно встраивая файл в PNG c правильным разрешением. Но это хлопотно. И имеет свои проблемы. В связи с этим выкладывается оттестированный 5 вариант. Ко всем влагаемым файлам дописывается двоичный префикс по которому они обнаруживаются в файле EXCEL При вложении в файл EXCEL автоматически к любому файлу добавляется префикс и меняется его тип. Когда нужно извлечь вложения, автоматически делается временная копия файла (что бы снять lock) и в ней по магической цепочке в префиксе ищутся вложения. Так как файл читается один раз - естественное ограничение длина переменной типа String. ![]() Второе ограничение - отсутствие в сохраняемом файле "магической" строки идентификатора. C этим можно побороться, но честно говоря лень. ![]() Смотрите вложение. Там полнофункциональный упаковщик распаковщик. Файлы добавляются как OLE объекты на скрытый лист Attachments. Управление через кнопки в заголовке листа "Список вложений". При экспорте все OLE объекты с листа Attachments удаляются. Важное замечание: Всё тестировалось и отлаживалось с файлами формата .xls Excel 2003 на 2007 Excel. Если файл будут изначально сохранять в xlsm формате, то всё несколько сложнее. Придётся сначала распаковать из этого zip XL\embending\, а потом по очереди обрабатывать по тому же алгоритму файлы oleObject1.bin ...oleObjectN.bin Или устанавливать принудительно для сохранения тип файла .xls. Последний раз редактировалось Aent; 22.01.2010 в 03:45. |
![]() |
![]() |
![]() |
#16 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,856
|
![]()
Понадобилось тут прикреплять разные файлы к книге Excel.
Aent, попробовал ваше решение, - увы, Excel 2010 завис намертво. Поэтому пришлось изобретать аналогичное решение самому. Главными критериями были: - надежность (стабильность работы во всех версиях Excel) - гибкость и удобство использования - скорость работы - простота кода Вот что в результате получилось: http://excelvba.ru/tools/Attachments Теперь можно легко прикреплять к книге Excel любые файлы, а потом их извлекать, или даже сразу запускать. Описание возможностей я ещё не закончил - но к статье прикреплён файл, в котором можно «пощупать» все функции моего решения (состоящего из 2 модулей класса) PS: Если у кого будут пожелания или замечания по коду - с удовольствием выслушаю. PPS: За счёт использования файла формата XLSB в качестве хранилища данных, можно наблюдать интересное явление - суммарный объем вложенных файлов больше, чем размер получаемого файла Excel На скриншоте видно: Цитата:
__Полезные надстройки для Excel. Парсинг сайтов и файлов.
![]() Последний раз редактировалось EducatedFool; 19.08.2012 в 08:32. |
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
OLE | Maks1978 | Общие вопросы C/C++ | 1 | 29.10.2008 10:10 |
OLE | Maks1978 | БД в Delphi | 1 | 29.10.2008 10:06 |
OLE ??? | Selena | Общие вопросы Delphi | 3 | 05.01.2008 18:00 |