Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Включение текста по условию в документ ворда (http://forums.kuban.ru/f1040/vklyuchenie_teksta_po_usloviyu_v_dokument_vorda-8609347.html)

Helen1986 28.02.2018 20:14

Включение текста по условию в документ ворда
 
В нормальных средах программирования есть директивы препроцессора типа

#define ABCD
.....
.....
.....

#ifdef ABCD

kusok koda

#else

kusok koda2

#endif

Вопрос - есть ли нечто подобное в ворде, чтобы по условию включать в документ нужные куски кода

nordbox 28.02.2018 20:18

Лично я как то не озадачивался таким, нужды не было
В скрипте запиши что нибудь

nordbox 28.02.2018 20:23

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

Helen1986 28.02.2018 20:47

(2) у нас был такой хитроЖ..й поставщик с закидонами, его быстренько обломали на нормальные документы.

Helen1986 28.02.2018 20:49

в ворде есть оператор IF THEN ELSE
но он несколько не так как требуется работает

nordbox 28.02.2018 21:07

Ну вот и я о том же заказчику такой задумки сказал ))
Ну сделать, то я сделал, показал, есть то хочется, но потом похоже заказчика тоже обломали с такими фортелями ))
А чем тебе IF THEN ELSE не нравится?

Helen1986 28.02.2018 21:34

[quote=nordbox;45357873]А чем тебе IF THEN ELSE не нравится? [/quote]

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

nordbox 28.02.2018 21:47

Cut, Past
Не то?

nordbox 28.02.2018 21:50

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

Helen1986 01.03.2018 12:54

[quote=nordbox;45357982]Cut, Past Не то?[/quote]

не то.

GariPortman 01.03.2018 13:37

В microsoft visial basic все это есть. Что не получается?

Helen1986 13.03.2018 12:08

(10) есть для кода, а мне нужно для текста документа Word

GariPortman 13.03.2018 13:38

11-Helen1986 > Код для кода? :) Напиши что нужно сделать.

Helen1986 13.03.2018 14:36

(12)

нужно аналогично директивам условной трансляции для исходного кода программы вставлять куски текста (большие, от абзаца до отдельной главы) в текст документа word

т.е. если есть директива типа #define glava_123? то в текст документа вставляется нужная глава (неважно откуда, из файла или она уже есть в документе. Второе условие - должно работать форматирование текста по стилям)

Helen1986 13.03.2018 14:46

смысл всего этого - есть общая часть приборов (ну типа мат платы, которая оснащается разным набором датчиков - получаем разные модели приборов. Мат плата постоянно модернизируется из-за смены комплектующих и развития, уже задолбались поддерживать актуальные описания в документации на каждый прибор. Приходится постоянно таскать куски теста из докумета в документ, а так как приборов довольно много - муторно и много затрат на актуальность.

Программа прошивки на самом деле одна, с директивами условной трансляции, все отлажено (язык программирования - С), внешняя программа на дельфях, тоже одна, тоже с условной компиляцией, тоже нет проблем

GariPortman 13.03.2018 14:54

Ну так вставляем в текст #define glava_123. Начинаем запись макроса и получаем

Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "#define glava_123"
.Replacement.Text = "Много текста из Война и мир"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With

GariPortman 13.03.2018 14:56

В макросе записывали ctr+H.

Helen1986 13.03.2018 15:19

до этого я и сама дошла

это РУЧНАЯ замена... не пойдет, ибо непригодно.

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

GariPortman 13.03.2018 15:55

Как соотноситься
[quote=Helen1986;45400010]хотелось бы расставить директивы [/quote]
с
[quote=Helen1986;45400010]А так ползать по 80 страницам и вручную править[/quote]

Для автоматического заполнения в любом случае нужно сопоставление КодПараграфа - Текст параграфа.
Я бы сделал так:
Создаем документ в котором каждый абзац - описание нужного датчика. Абзац начинаем уникальным символом (#Glava123). Создаем макрос, который:

1. Создает новый документ
2. Запрашивает список нужных абзацев (можно вносить в документ)
2. перебирает все абзацы "большого" документа и если заголовок совпадает с нужным - копирует абзац в новый документ

GariPortman 13.03.2018 16:06

With ActiveDocument
Set Ps = .Paragraphs
End With


For Each P In Ps
i = i + 1

If Ps(i).Range.Text Like "*glava123*" Then
Либо добавляем в новый документ либо удаляем
End If
Next

Helen1986 13.03.2018 22:35

(19) слишком много ручной работы - это нужны квалифицированные эксплуатанты, которых нет. Нам бы чего нибудь попроще

GariPortman 14.03.2018 08:32

[quote=Helen1986;45401424] слишком много ручной работы - это нужны квалифицированные эксплуатанты[/quote] Эксплуатант нажимает одну единственную кнопку.
[quote=Helen1986;45401424]Нам бы чего нибудь попроще [/quote]
Написать инструкцию в которой будет: Если у вас датчик такой то.... если такой то .....

Helen1986 14.03.2018 11:14

попробую. Но странно, что в таком навороченном продукте, как офис, такого не предусмотрено


Текущее время: 03:28. Часовой пояс GMT +3.