![]() |
Включение текста по условию в документ ворда В нормальных средах программирования есть директивы препроцессора типа #define ABCD ..... ..... ..... #ifdef ABCD kusok koda #else kusok koda2 #endif Вопрос - есть ли нечто подобное в ворде, чтобы по условию включать в документ нужные куски кода |
Лично я как то не озадачивался таким, нужды не было В скрипте запиши что нибудь |
Меня как то озадачивали еще в самом начале нулевых идиотской задачей: Нужно было что бы вордовский док попал клиенту, он его открыл, прочитал и после закрытия там ничего не было внутри, т.е. удалялось содержимое и при втором открытии тупо пустой лист ))) |
(2) у нас был такой хитроЖ..й поставщик с закидонами, его быстренько обломали на нормальные документы. |
в ворде есть оператор IF THEN ELSE но он несколько не так как требуется работает |
Ну вот и я о том же заказчику такой задумки сказал )) Ну сделать, то я сделал, показал, есть то хочется, но потом похоже заказчика тоже обломали с такими фортелями )) А чем тебе IF THEN ELSE не нравится? |
[quote=nordbox;45357873]А чем тебе IF THEN ELSE не нравится? [/quote] мне надо вставлять целые абзацы и даже отдельные главы. Вроде этот оператор такого не позволяет... Хотя буду смотреть дальше |
Cut, Past Не то? |
Если условие выполняется, вырезаешь, вставляешь, если нет другое ставишь, попробуй просто именно записать макрос, а там сообразишь что и как. |
[quote=nordbox;45357982]Cut, Past Не то?[/quote] не то. |
В microsoft visial basic все это есть. Что не получается? |
(10) есть для кода, а мне нужно для текста документа Word |
11-Helen1986 > Код для кода? :) Напиши что нужно сделать. |
(12) нужно аналогично директивам условной трансляции для исходного кода программы вставлять куски текста (большие, от абзаца до отдельной главы) в текст документа word т.е. если есть директива типа #define glava_123? то в текст документа вставляется нужная глава (неважно откуда, из файла или она уже есть в документе. Второе условие - должно работать форматирование текста по стилям) |
смысл всего этого - есть общая часть приборов (ну типа мат платы, которая оснащается разным набором датчиков - получаем разные модели приборов. Мат плата постоянно модернизируется из-за смены комплектующих и развития, уже задолбались поддерживать актуальные описания в документации на каждый прибор. Приходится постоянно таскать куски теста из докумета в документ, а так как приборов довольно много - муторно и много затрат на актуальность. Программа прошивки на самом деле одна, с директивами условной трансляции, все отлажено (язык программирования - С), внешняя программа на дельфях, тоже одна, тоже с условной компиляцией, тоже нет проблем |
Ну так вставляем в текст #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 |
В макросе записывали ctr+H. |
до этого я и сама дошла это РУЧНАЯ замена... не пойдет, ибо непригодно. хотелось бы расставить директивы - а потом зашел в голову, поправил одну директиву и получил нужный текст. А так ползать по 80 страницам и вручную править... и чем это лучше |
Как соотноситься [quote=Helen1986;45400010]хотелось бы расставить директивы [/quote] с [quote=Helen1986;45400010]А так ползать по 80 страницам и вручную править[/quote] Для автоматического заполнения в любом случае нужно сопоставление КодПараграфа - Текст параграфа. Я бы сделал так: Создаем документ в котором каждый абзац - описание нужного датчика. Абзац начинаем уникальным символом (#Glava123). Создаем макрос, который: 1. Создает новый документ 2. Запрашивает список нужных абзацев (можно вносить в документ) 2. перебирает все абзацы "большого" документа и если заголовок совпадает с нужным - копирует абзац в новый документ |
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 |
(19) слишком много ручной работы - это нужны квалифицированные эксплуатанты, которых нет. Нам бы чего нибудь попроще |
[quote=Helen1986;45401424] слишком много ручной работы - это нужны квалифицированные эксплуатанты[/quote] Эксплуатант нажимает одну единственную кнопку. [quote=Helen1986;45401424]Нам бы чего нибудь попроще [/quote] Написать инструкцию в которой будет: Если у вас датчик такой то.... если такой то ..... |
попробую. Но странно, что в таком навороченном продукте, как офис, такого не предусмотрено |
Текущее время: 03:28. Часовой пояс GMT +3. |