Форматирование цветом в Word из VB

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Форматирование цветом в Word из VB

Сообщение Лёха_Virus » 20.05.2005 (Пт) 6:37

Здраствуйте!
Задача такая: в текстовую переменную pText загоняются предложения. а потом эта переменная загоняется в ворд:
Код: Выделить всё
With wd.ActiveWindow.Selection
        .InsertAfter pText
        .InsertParagraphAfter
        .Font.Bold = fbold
        .ParagraphFormat.Alignment = align
        .Font.Name = fname
        .EndOf
    End With


можно ли добавить какую-нибудь переменную в pText чтобы определённые предложения в ворде выделились цветом.
по типу как в хтмл-е <color="ff00ff">asdf.
есть в ворде такие служебные символы?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.05.2005 (Пт) 7:49

В служебные символы ты не пролезешь, изменяй их через объектную модель.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.05.2005 (Пт) 13:14

Не, ну можно, конечно, сгенерить RTF и вставить его, но объектная модель проще :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.05.2005 (Пт) 13:16

Хм... А как можно RTF подсунуть в открытый документ?
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.05.2005 (Пт) 13:21

Если бы я был уверен в том, что он сожрет RTF-формат и не подавится, то я бы ему так и пихнул бы что-нить типа:
\cf1 цветная строка \cf0

Проблем тут всего две: убедиться, что RTF-формат будет понят вордом гарантированно и однозначно, и раскопать colrtbl в хидере документа :).

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 20.05.2005 (Пт) 13:43

Наколько я помню, во вставляемом фрагменте можно свою colrtbl определить...
Правда муть это...

А подсунуть-то просто: clipboard.settext "\cf1 цветная строка \cf0", vbCFRTF
Потом Paste, а Word разберётся :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 20.05.2005 (Пт) 13:45

А без привлечения буфера обмена? :)
Lasciate ogni speranza, voi ch'entrate.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 20.05.2005 (Пт) 17:01

GSerg писал(а):Наколько я помню, во вставляемом фрагменте можно свою colrtbl определить...

Правда? Меня, признаться, в свое время заломало читать все 248 страниц спецификации RTF, но такого я там не видел, хотя изучал как раз раздел цветов. Впрочем, автору топика этот способ все равно вряд ли пригодится...

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 20.05.2005 (Пт) 17:06

рассуждения интересные...
упомянули тут про объектную модель - это через word.document?
тут проблема в том что придётся каждый фрагмент отдельно вставлять в ворд, а не целый текст... отсюда огромная потеря быстродействия...
а вот RTF... RTBox аналогично будет работать? если сначала в RTB загнать а потом в ворд оттуда... получится? :)
Последний раз редактировалось Лёха_Virus 20.05.2005 (Пт) 17:23, всего редактировалось 1 раз.

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 20.05.2005 (Пт) 17:21

нет, RTF вместе с RTB не работает... вот как в ворде выглядит одно красное слово:

{\rtf1\ansi\ansicpg1251\deff0{\fonttbl{\f0\fswiss\fprq2\fcharset204{\*\fname Arial;}Arial CYR;}{\f1\fnil\fcharset204 MS Sans Serif;}}
{\colortbl ;\red255\green0\blue0;}
\viewkind4\uc1\pard\cf1\lang1049\f0\fs20\'e7\'ed\'e0\'f7\'e5\'ed\'e8\'ff\'ec\'e8 \cf0\'ee\'e1\'ed\'e0\'f0\'f3\'e6\'e8\'e2\'e0\'e5\'f2\'f1\'ff \f1\fs17
\par }

вот там виднеется колортабл, чарсет вылез, кодировка какая-то зверская...

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.05.2005 (Пт) 17:28

это не зверская кодировка, это русские буквы :)
Весь мир матрица, а мы в нем потоки байтов!

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 20.05.2005 (Пт) 17:30

а можно написать вордовский макрос из вб и запустить его?
а макрос бы искал символ какой-нить и форматировал бы нужную строку цветом?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 20.05.2005 (Пт) 18:17

Лёха_Virus писал(а):а можно написать вордовский макрос из вб и запустить его?
а макрос бы искал символ какой-нить и форматировал бы нужную строку цветом?


можно. и вернемся к исходному варианту, т.е. к обращению к Word через объектную модель
Весь мир матрица, а мы в нем потоки байтов!

Лёха_Virus
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 168
Зарегистрирован: 24.03.2003 (Пн) 17:13
Откуда: Анграск

Сообщение Лёха_Virus » 21.05.2005 (Сб) 4:45

!Viper! писал(а):
Лёха_Virus писал(а):а можно написать вордовский макрос из вб и запустить его?
а макрос бы искал символ какой-нить и форматировал бы нужную строку цветом?


можно. и вернемся к исходному варианту, т.е. к обращению к Word через объектную модель


ну всё равно макрос будет быстрее чем цикл!:
Код: Выделить всё
for i = 0 to 200
    With wd.ActiveWindow.Selection
        .InsertAfter pText (i)
        .InsertParagraphAfter
        .Font.Bold = fbold
        .ParagraphFormat.Alignment = align
        .Font.Name = fname
        .EndOf
    End With
next


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 111

    TopList