Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как изменить цвет текста с помощью WinApi  (Прочитано 18213 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sergius25
Гость
« : 23-12-2006 15:27 » 

Подскажите, пожалуйста, как с помощью функций WinApi в макросе изменить цвет выводимого текста в ячейки Excel?
Записан
Naghual
Модератор

ua
Offline Offline
Пол: Мужской
ОПТИМИСТ


WWW
« Ответ #1 : 23-12-2006 19:40 » 

Зачем усложнять жизнь?
API нету - сам эксель рулит!
Записан
sergius25
Гость
« Ответ #2 : 23-12-2006 22:43 » 

Такое задание в универе дали!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #3 : 24-12-2006 13:17 » 

sergius25, В ВинАПИ есть функция SetTextColor. Только я не совсем допонимаю, как это должно согласовываться с Excell. Или у Вас препод слишком умный или прикалывается.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 24-12-2006 17:44 » 

Selection.Font.ColorIndex = 50

50 - номер цвета
зы.В каком форуме создана тема, на таком языке и отвечаю
Записан

ещё один вопрос ...
sergius25
Гость
« Ответ #5 : 24-12-2006 18:06 » 

Цитата
Только я не совсем допонимаю, как это должно согласовываться с Excell.
Мне нужно это привязать к следующему заданию, которое я сделал:
Макрос в Word вызывает файл F.xls, в котором находится заранее записанный макрос и передаёт ему управление. Этот макрос получает строчку, которая введена в Word, изменяет порядок слов в этом тексте на обратный и выводит каждое слово в ячейке. В тексте с изменённым порядком слов первая буква в первом слове должна быть большой, а первая и последняя буквы в последнем слове должны быть маленькими!
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #6 : 24-12-2006 19:07 » 

sergius25, А где в задании упоминание цвета и WinAPI?
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
sergius25
Гость
« Ответ #7 : 25-12-2006 11:35 » 

Цитата
А где в задании упоминание цвета и WinAPI?
А самый первый пост по твоему что?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 25-12-2006 12:41 » 

sergius25, ты не дерзи. Твой первый пост это куча несвязных слов. Так что, если ты еще не получил ответа на свой вопрос, то рассказывай  подробнее что хочешь. Тебе уже дали и АПИ функцию и методы Вижуал Бэйсика. Что еще надо?
Записан

ещё один вопрос ...
sergius25
Гость
« Ответ #9 : 25-12-2006 17:49 » 

Цитата
sergius25, ты не дерзи.
Извините!

Цитата
Твой первый пост это куча несвязных слов. Так что, если ты еще не получил ответа на свой вопрос, то рассказывай  подробнее что хочешь. Тебе уже дали и АПИ функцию и методы Вижуал Бэйсика. Что еще надо?

Вот код макроса задания, условие которого я написал тремя постами выше:

Код:
Sub WordRevers(s)

Dim s1() As String
Dim i As Integer
Dim sTmp As String

'разбиваем предложение на слова
s1 = Split(s, " ")
For i = LBound(s1) To UBound(s1)
sTmp = s1(UBound(s1) - i)

'выполняем условие про большие и маленькие буквы
'если последенее слово, то делаем первую букву большой
If i = LBound(s1) Then sTmp = UCase(Left(sTmp, 1)) + Mid(sTmp, 2)

'если первое слово, то делаем все буквы маленькими
If i = UBound(s1) Then sTmp = LCase(sTmp)

'пишем результат
ActiveWorkbook.Worksheets(1).Cells(1, i + 1) = sTmp

'ActiveWorkbook.Worksheets(1).Range("A" & CStr(i + 1)).Value = sTmp
Next i

End Sub

Где s - переменная, в которой хранится текст, напечатанный в Word.

И вопрос: как подключить ф-цию WinApi и спомощью неё изменить цвет текста, выводимого в ячейки?
« Последнее редактирование: 16-12-2007 16:16 от Алексей1153++ » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #10 : 25-12-2006 20:33 » 

sergius25, У тебя вообше есть примеры, как вставлять в аплеты экселя WinAPI функции. Просто все графические WinAPI функции подрузомевают контекст вывода (DC). У меня правда нет опыта написания аплетов. Но я никак не могу взять в толк, как можно например рисовать в ячейке экселя напрямую, обходя весь механизм самого экселя.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 26-12-2006 00:55 » 

Вот как советуется  для ВБ, но не ВБА

Код:
Private Declare Function SetWindowText Lib "User32" _
Alias "SetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String) As Long
Ну и применять советуют так
Код:
 Private Sub Form_Load()
   SetWindowText Form1.hWnd, "SDFsdfgsdf"
 EndSub

Для SetTextColor будет по анналогии, только библиотека будет Gdi32 и может Alias не пригодится.
Только смотри какой момент, я понимаю, как эти функции должны буджут работать с формами, которые ты создаш в экселе допустим текст ячейкт ...., тут надо думать.
Записан

ещё один вопрос ...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines