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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2010, 16:37   #1
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию Автоматическое оформление документа по ГОСТ

предположим есть документ с рядом типовых ошибок в оформлении. хочу его исправить сделать по ГОСТ.

по шагово я это примерно так вижу
- выделить весь текст "похожий на основной". по стилю он может отличатся форматированием - отступом, выравниванием, размером шрифта. фактически это любой текст кроме "названий" и "заголовков". как его выделить и выстаить стиль "обычный" который уже можно нормально настроить ? абзацные отступы, нумерация, табуляция тогда уже будет верная

- нужно найти все формулы. найти все несложно если ActiveDocument.Fields перебрать. но как выделить именно те которые стоят как формулы ? т.е с новой строки ?

-с переносом строк у таблиц надо разобратся. но тут идей нет.

-ссылки в тексте почти всегда есть, но несовпадают с запиской. т.е видимо надо
пройти все таблицы заменив текст на линк название, а потом пройтись по тексту в поисках текста "табл. №" чтобы вставить перекрестные ссылки.
аналогично с формулами

как тереть пустые абзацы я нашел.
заменить стили основного текста и заголовков просто.

вообще в нужных мне документах стилей нужно весьма ограниченное количество:
основной (для текста)
несколько заголовков нумерованных
названия обьектов (рисунки, таблицы)
все остальное - вариации из-за неверного форматирования.

если с заголовками можно еще разобратся вручную, то выделение разных частей текста и сбрасывание стиля в "Основной" занимает массу времени. по идее надо всего лишь перебрать абзацы, пропустив заголовки и таблицы. с заголовками понятно - они стилем отличаются, а вот как пропустить таблицы ?
bdfy вне форума Ответить с цитированием
Старый 20.02.2010, 17:22   #2
Dophin
Форумчанин
 
Аватар для Dophin
 
Регистрация: 13.01.2010
Сообщений: 410
По умолчанию

с примером было бы понятней что Вы хотите. Приложите небольшой кусочек файла с листами "есть вот" и "хочу так"
Dophin вне форума Ответить с цитированием
Старый 20.02.2010, 19:35   #3
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

ну вот например.
стиль основного текста нужно сделать один.
вместо обычных нумеров в тексте вставить поля нумерации
формулы отнумеровать и т.д.

вопрос пока стоит в том как выделить "основной" текст ? т.е весь кроме заголовков, таблиц, названий обьектов
Вложения
Тип файла: rar пример оформления.rar (83.1 Кб, 42 просмотров)
bdfy вне форума Ответить с цитированием
Старый 20.02.2010, 22:29   #4
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию Начнём...

Цитата:
Сообщение от bdfy Посмотреть сообщение
-с переносом строк у таблиц надо разобратся. но тут идей нет
Вот этот пост: http://programmersforum.ru/showthrea...737#post423737.

Есть команда Выделить текст, имеющий такой же формат: по правой кнопке (на тексте) → Стили.

Присвойте один язык (а то там и русский, и белорусский, и сербский), ведь это тоже может влиять на стили.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 20.02.2010, 23:49   #5
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

Цитата:
Есть команда Выделить текст, имеющий такой же формат
не работает она так как от нее ждешь в подавляющем большинстве случаев (
как в ворде все сделать правильно руками я представляю хорошо. идея в том чтобы написать возможно более универсальный макрос. в данным момент задача состоит в том чтобы определить абзац это текст или это таблица ? и совершать уже потом нужные действия.
bdfy вне форума Ответить с цитированием
Старый 21.02.2010, 03:34   #6
Sasha_Smirnov
Особый статус
Участник клуба
 
Аватар для Sasha_Smirnov
 
Регистрация: 24.11.2008
Сообщений: 1,535
По умолчанию

Код:
Sub IfWeAreInTable()
    nt = ActiveDocument.Tables.Count
    
    For i = 1 To nt
        coursorIntable = Selection.InRange(ActiveDocument.Tables.Item(i).Range) 'Да/Нет'
        If coursorIntable Then
            MsgBox "Мы в" & IIf(i = 2, "о ", " ") & i & "-й таблице документа " & ActiveDocument & "."
        End If
    Next
    
End Sub
даёт знать, в таблице ли мы (и в какой по счёту).

О работе с текстом вне таблиц было вот тут, а также пост viter.alex’а в теме от КотФиларет (ссылка — на синем слове).

Последний раз редактировалось Sasha_Smirnov; 21.02.2010 в 15:41. Причина: добавка.
Sasha_Smirnov вне форума Ответить с цитированием
Старый 25.02.2010, 03:23   #7
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

Sasha_Smirnov. спасибо.
другая задачка
можно перебрать все ActiveDocument.InlineShapes посмотреть .OLEFormat.ClassType - выделить формулы. а как определить что эта формула стоит в начале строки отдельно а не просто в тексте ?
bdfy вне форума Ответить с цитированием
Старый 03.04.2010, 15:09   #8
bdfy
Форумчанин
 
Регистрация: 12.11.2009
Сообщений: 258
По умолчанию

вернулся к решению этой задачи
разных блоков в работах бывает как правило не так много
- картинка с подписью
- таблица
- формула
- обычный текст (все остальное)
для таблицы решение вроде бы подобрали... а что делать с рисунками и главное формулами ? как их однозначно выделить ?
bdfy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реализация ГОСТ Р 34.10-94 Stefaniya Свободное общение 4 13.05.2010 22:21
Характеристика ГОСТ 28 147-89 beegl Помощь студентам 2 10.10.2008 10:22
оформление FIIR Помощь студентам 1 16.06.2008 20:40