Форум по VBA и MS Office

Word => Макросы в Word => Тема начата: Посетитель_20112025 от 21 ноября 2025, 13:19

Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 ноября 2025, 13:19
Когда я Вордовский файл сохраняю в формат TXT, то в конце файла добавляется содержимое верхних колонтитулов (для нечётной и чётной страницы). Как сделать так, чтобы колонтитулы не экспортировались в TXT-файл?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 ноября 2025, 15:35
Встроенных инструментов для этого нет. Значит вам надо сначала подготовить документ - удалить в нём ненужное, а затем сохранять в текстовый формат.
Или можно написать макрос, который будет копировать содержимое основной части документа в текстовый файл.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 ноября 2025, 16:02
Я пытался найти способ полностью удалить колонтитулы средствами VBA, но так и не нашёл. Ведь мало затереть их содержимое: в этом случае они всё равно будут экспортироваться, только в виде пустой строки. Нужно их каким-то образом «грохнуть».
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 ноября 2025, 16:10
Цитата:
Ведь мало затереть их содержимое:

Что вы подразумеваете под "затереть"? Какие действия вы делаете (какие кнопки щёлкаете), чтобы затереть?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 ноября 2025, 16:31
Я имел в виду – удалить тот текст, который набит в колонтитуле. Но сам по себе колонтитул ведь никуда не девается...
Я просто не могу сообразить, как правильно разрулить эту проблему, куда мне копать.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 ноября 2025, 16:35
У меня такое впечатление, что эта задача должна легко решаться, но не соображу, как.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 ноября 2025, 17:27
Если удалить текст в колонтитуле, то, соответственно, в txt-файл не запишется колонтитул - ведь писать то нечего.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 ноября 2025, 17:41
Хм. А ведь точно... Где-то я, видимо, тупил.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 15:28
А всё-таки с ними что-то не то.
Удаляю колонтитулы таким образом:

Спойлер
Dim HeaderFooter As HeaderFooter
With ActiveDocument
    .PageSetup.DifferentFirstPageHeaderFooter = True
    .PageSetup.OddAndEvenPagesHeaderFooter = True

    For Each HeaderFooter In .Sections(1).Headers
        If HeaderFooter.Exists Then HeaderFooter.Range.Delete
    Next
End With
[свернуть]

Правильно?

Так вот: результат следующий: после сохранения Вордовского файла в TXT в конце TXT появляются пустые строки, 13 штук. Тот же самый результат, если я без всякого удаления колонтитулов просто попытаюсь сохранить Вордовский файл в TXT, только тогда вместо соответствующих пустых строк будет помещено содержимое колонтитулов. Причём это легко отследить, если добавить куда-нибудь в текст символы не из кириллической кодовой страницы: тогда Ворд откроет окно с параметрами преобразования кодировок, и в конце окна как раз видны эти «новорождённые» пустые строки. Точнее, не совсем пустые: часть пустых, а часть имеет в начале строки 4 пробела (это в моём случае, у других, возможно, не совсем так). Похоже на то, что эти строки имеют отношение к колонтитулам.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 15:42
Если не макросом удалять колонтитулы, а вручную, то такая же проблема?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 16:01
Там была интересная ситуация: первый раз удалил вручную, сохранил – никаких пустых строк не добавилось. Я уже обрадовался, что нашёл, где собака зарыта. Но при последующих экспериментах пустые строки стабильно появлялись.

Кстати, колонтитулы при их удалении макросом физически не удаляются, они только очищаются. Это легко проверить, повторно напустив этот макрос на тот же текст.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:06
То есть проблема есть и при ручном удалении? Вы заходите в колонтитул, всё выделяете, удаляете и затем пересохраняете в txt-файл и пустые пространства на месте колонтитулов?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 16:11
Да, именно так. Но при этом неизвестно, откуда этот хвост берётся: возможно, что это какие-то внутренние «осколки» из самого Ворда, а не из документа.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:17
Значит макрос не виноват.
Значит проблема в самом Ворде.

После того, как вы удалили колонтитулы, визуально в документе всё нормально, сверху ничего лишнего нет?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:21
Сейчас создал пустой ворд-файл, пересохранил его, в конце есть пустые абзацы.
Значит программисты Майкрософта так сделали. Просто нужно принять это.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:23
Может быть пустые абзацы формируют не колонтитулы, а что-то другое.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 16:29
Но и колонтитулы тоже. В этом можно убедиться, набив какую-нибудь информацию в каждый из колонтитулов.
По идее, от колонтитулов должно сохраняться 6 строк: 3 от верхнего колонтитула, и 3 от нижнего. А у меня их 12 (точнее, 13, но одна строка, видимо, это последняя строка документа).
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:41
Я создал пустой ворд-файл, добавлял, удалял колонтитулы. После удаления колонтитулов, ничего лишнего нет в txt-файле.

Может быть есть нижние колонтитулы, в которых есть пустые абзацы. Ваш макрос работает с колонтитулом первой страницы и колонтитулами чётных, нечётных страниц. Возможно, что в документе есть колонтитулы, в которых есть пустые абзацы, но этих колонтитулов в документе сейчас не видно - колонтитулы станут видны при появлении страниц.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:51
Чтобы убрать влияние разных видов колонтитулов, пройдитесь по всем разделам и уберите галочки для колонтитула первой страницы и колонтитулов чётных и нечётных страниц. После этого вы будете видеть все колонтитулы и будете уверены, что нет скрытых колонтитулов.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 16:53
«После удаления колонтитулов, ничего лишнего нет в txt-файле» – так Вы же писали на предыдущей странице, что у Вас тоже добавляются пустые строки...
Нижним колонтитулом я вообще не пользуюсь. Но всё равно я его в том макросе удаляю таким же образом, просто я не стал добавлять этот код в то сообщение.
Вообще сколько я себя помню – в конец TXT-файла всегда добавлялось несколько пустых строк при сохранении его из Вордовского документа.

Да, на всякий случай: я работаю с doc-файлами, а не с docx. В Ворде 2010.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 16:56
«пройдитесь по всем разделам» – я предварительно удаляю все разделы и принудительные разрывы страниц:
Спойлер
    .Execute FindText:="^b", ReplaceWith:="", Replace:=wdReplaceAll
    .Execute FindText:="^m", ReplaceWith:="", Replace:=wdReplaceAll
[свернуть]
Так что у меня остаётся один основной раздел.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:58
Да, я писал, что добавляются пустые строки, - это я ещё тогда не понимал, что за пустые строки.
Но у меня не было проблем с колонтитулами в пустом новом файле.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 16:59
Если вы удаляете все разделы и все колонтитулы, то тогда удаляйте и особые колонтитулы.
Этим кодом вы создаёте особые колонтитулы:
    .PageSetup.DifferentFirstPageHeaderFooter = True
    .PageSetup.OddAndEvenPagesHeaderFooter = True

Хотя это не поможет - колонтитулы то ведь всё равно останутся. Эти команды могут скрыть колонтитул, но не удаляют его - колонтитул появится в txt-файле.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 17:40
Этим кодом вы создаёте особые колонтитулы:
    .PageSetup.DifferentFirstPageHeaderFooter = True
    .PageSetup.OddAndEvenPagesHeaderFooter = True


Не создаю, а открываю к ним доступ. Если эти параметры имеют значение False, то содержимое соответствующих колонтитулов вышеприведённым макросом не удаляется. Т.е. вне зависимости от значения этих параметров цикл выполняется ровно три раза, и каждый раз как будто успешно. Но если к соответствующему колонтитулу доступ не открыт, то при повторном выполнении макроса видно, что изменения в колонтитуле не произошли.
Но и после «удаления» всех трёх колонтитулов цикл успешно выполняется три раза, т.е. физического удаления колонтитулов не происходит.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 17:54
Для чистоты эксперимента удалил файл Normal.dotm – таким образом новый Вордовский документ стал «как слеза младенца». Сохранил документ в txt. Результат тот же: добавляются 12 дополнительных строк.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 19:10
Новый пустой ворд-документ даёт 12-ть пустых строк в txt-файле?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 19:16
Да, именно так. Причём без шаблона Normal.dotm!
Word 2010.
Точнее, не совсем пустой документ: вставил туда букву под ударением, чтобы выдалось окно конвертации сохраняемого файла.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 19:17
А если обычную русскую букву вставить, то будет 12-ть пустых абзацев?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 19:50
Так. Опять попробовал без шаблона. Ничего не добавилось.
Попробовал с шаблоном: там у меня прописаны колонтитулы для нечётных и чётных страниц. Добавились 4 строки.
Попробовал свой рабочий экспериментальный файл. При одном сохранении в него добавились 6 строк, при другом – 12 строк.
Я уже давно склоняюсь к выводу, что Ворд в процессе работы где-то у себя в памяти оставляет хвосты, и тут они и выплывают.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 21:04
Можете проблемный файл выложить на форуме?
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 21:13
Вот сам файл, а также результат его сохранения в TXT.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 21 декабря 2025, 22:44
Удалите все колонтитулы, пересохраните в txt-файл, убедитесь, что есть проблема, и выложите файлы на форуме.

Можно сохранить текст из Ворда в txt-файл без Сохранить как, а просто создать текстовый файл и в него скопировать весь текст. В этом случае не будет ничего непредвиденного и не надо будет разгадывать тайны Ворда.

Ворд, кроме того, что добавляет пустые абзацы по какому-то только ему известному алгоритму, так ещё и добавляет спереди пробелы, если в тексте есть отступы. Возможно есть и ещё какие-то действия Ворда, которые проявят себя позже.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Посетитель_20112025 от 21 декабря 2025, 23:52
«Можно сохранить текст из Ворда в txt-файл без Сохранить как, а просто создать текстовый файл и в него скопировать весь текст» – это конечно, я так и собирался сделать, если не удастся разобраться с тем, где собака зарыта. Но хотелось бы всё-таки разобраться.
Название: Как избавиться от колонтитулов при сохранении в формат TXT?
Отправлено: Администратор от 22 декабря 2025, 11:37
Удалите все колонтитулы, пересохраните в txt-файл, убедитесь, что есть проблема, и выложите файлы на форуме.