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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2009, 14:15   #1
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию Почему после обработки макросом файл становится больше?

Макрос обыкновенный - заменяет лишние пробелы, табуляции, строки, расставляет стили, назначает заголовки и формирует оглавление. Так вот после обработки размер файла сильно вырастает - с 200 до 250 килобайт. Замечено, что, если не заменять двойные пробелы на одинарные (^w на " "), размер вырастает до 220, то есть меньше.

Отчего такое может быть? Видимо, в файле сохраняется какая-то история изменений? Как её отключить (если она есть) или как посмотреть непечатаемое содержимое файла? (Опция "показывать непечатаемые знаки" и так включена)

Word 2003
garik64 вне форума Ответить с цитированием
Старый 17.09.2009, 19:26   #2
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Есть такая пестня. Сохраняется история изменений. Раньше советовали копировать содержимое старого файла в новый, старый закрывать и новый сохранять под тем же именем. Но это способ очень неудобный. Попробуйте очистить историю изменений: ActiveDocument.UndoClear
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 18.09.2009, 09:40   #3
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от viter.alex Посмотреть сообщение
Есть такая пестня. Сохраняется история изменений. Раньше советовали копировать содержимое старого файла в новый, старый закрывать и новый сохранять под тем же именем. Но это способ очень неудобный. Попробуйте очистить историю изменений: ActiveDocument.UndoClear
Эх, не работает. Действует только для изменений, внесённых в текст с момента активизации документа. Очищает только то, что можно отменить по Ctrl+Z. Иначе говоря, то, что сделано (и, блин, где-то в документе запомнено) в предыдущие сессии, не трогает. А вот первый, геморройный способ, действует. (Правда, тоже не без оговорок). Подозреваю, Word хранит изменения в tmp-файлах, а потом зачем-то суёт в итоговый документ. Будем посмотреть.
garik64 вне форума Ответить с цитированием
Старый 18.09.2009, 14:40   #4
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Если документы не на десятки мегабайт, мне помогало сохранение документа в формат .xml с последующим переоткрытием и сохранением как
.doc. Однако, это не универсальный способ
Aent вне форума Ответить с цитированием
Старый 20.09.2009, 03:42   #5
viter.alex
Балуюсь кодами
Участник клуба
 
Аватар для viter.alex
 
Регистрация: 09.01.2009
Сообщений: 1,837
По умолчанию

Сохранять в xml это неплохой вариант. Я думаю, что не только в xml, но и в любой другой формат, в котором нельзя сохранить историю изменений.
Лучше день потерять — потом за пять минут долететь!©
viter.alex вне форума Ответить с цитированием
Старый 20.09.2009, 13:15   #6
Aent
Форумчанин
 
Аватар для Aent
 
Регистрация: 17.07.2009
Сообщений: 519
По умолчанию

Конечно. Но в HTML сохраняет уж слишком долго. Да и открытие большого HTML файла (да же с фильтром) очень тормозит. А при сохранении в RTF у меня на сложных документах артефактов появлялось больше чем при сохранении в XML. Кстати, нужно помнить что VBA проект при сохранении в XML теряется. XML представление по моим экспериментам оказалось
наиболее компактным и близким (при последующем открытии) к оригиналу. Тестировал на Word 2003.
Aent вне форума Ответить с цитированием
Старый 21.09.2009, 11:53   #7
garik64
Форумчанин
 
Регистрация: 09.07.2009
Сообщений: 111
По умолчанию

Цитата:
Сообщение от Aent Посмотреть сообщение
XML представление по моим экспериментам оказалось
наиболее компактным и близким (при последующем открытии) к оригиналу. Тестировал на Word 2003.
Хм. У меня вордовский файл размером 209 кб в XML стал весить 466, а при сохранении этого XML опять в DOC - 199. Если просто переношу в новый документ и сохраняю - 166.
garik64 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Почему после выполнения do-while, вложенного в if, инструкции дальше не выполняются? Chewing_dog Помощь студентам 3 09.06.2009 06:44
Почему после передачи tStream методами Indy не работает tBitmap.loadFromStream ? Altera Работа с сетью в Delphi 2 21.03.2009 15:35
Почему инди-компонента TIdTCPServer тормозит после десяти минут работы? alex-v Работа с сетью в Delphi 2 15.07.2008 19:02
Почему после компилиции не пишет кирилицей? lionig28 Общие вопросы C/C++ 1 01.02.2008 21:33
Label не становится видимым. Kashp Компоненты Delphi 7 26.08.2007 22:34