1

Тема: Как поменять цвет фона на цвет текста?

Добрый день)

есть документ word, в нём большая таблица, внутри этой таблицы текст, с разным цветом фона.
Этот документ надо перекинуть в Excel для последующей сортировки и анализа цветных кусков. Проблема в том что Excel игнорирует цвет фона при любом способе вставки, но понимает цвет текста. В связи с этим вопрос - можно ли автоматически в Word изменить цвет фона кусков текста на цвет самого текста?
Файл большой, вручную нереально.

Post's attachments

было - стало.rar 14.37 Кб, 4 скачиваний с 2013-04-19 

You don't have the permssions to download the attachments of this post.

2

Re: Как поменять цвет фона на цвет текста?

пробуйте:

Sub ChangeForegroundColor()
    Dim ColorIndexes
    ColorIndexes = Array(0, 16711680, 16776960, 65280, 16711935, _
                        255, 65535, 16777215, 8388608, 8421376, _
                        32768, 8388736, 128, 32896, 8421504, 12632256)
    With Selection.Find
        .ClearFormatting
        .Text = ""
        .Highlight = True
        .Replacement.Text = ""
        .Forward = True
        .Format = True
        While .Execute
            Select Case Selection.Range.HighlightColorIndex
                Case wdBlack: Selection.Font.Color = wdColorBlack
                Case wdBlue: Selection.Font.Color = wdColorBlue
                Case wdTurquoise: Selection.Font.Color = wdColorTurquoise
                Case wdBrightGreen: Selection.Font.Color = wdColorBrightGreen
                Case wdPink: Selection.Font.Color = wdColorPink
                Case wdRed: Selection.Font.Color = wdColorRed
                Case wdYellow: Selection.Font.Color = wdColorYellow
                Case wdWhite: Selection.Font.Color = wdColorWhite
                Case wdDarkBlue: Selection.Font.Color = wdColorDarkBlue
                Case wdTeal: Selection.Font.Color = wdColorTeal
                Case wdGreen:  Selection.Font.Color = wdColorGreen
                Case wdViolet: Selection.Font.Color = wdColorViolet
                Case wdDarkRed: Selection.Font.Color = wdColorDarkRed
                Case wdDarkYellow: Selection.Font.Color = wdColorDarkYellow
                Case wdGray50: Selection.Font.Color = wdColorGray50
                Case wdGray25: Selection.Font.Color = wdColorGray25
            End Select
'            Selection.Font.ColorIndex = ColorIndexes(Selection.Range.HighlightColorIndex+1)
            Selection.Range.HighlightColorIndex = wdNoHighlight
            Selection.Collapse wdCollapseEnd
        Wend
    End With
End Sub

Я хотел избежать оператора Select Case, создав массив соответствий цвета выделения и цвета шрифта. Но на строчку

Selection.Font.ColorIndex = ColorIndexes(Selection.Range.HighlightColorIndex+1)

Выдаёт ошибку, что значение выходит за рамки диапазона. Странно, почему константу нельзя заменить её значением?

Лучше день потерять — потом за пять минут долететь!

3

Re: Как поменять цвет фона на цвет текста?

Спасибо!
вроде работает.   big_smile

Попросил у человека файл целиком - попробую на большом массиве и отпишусь

4

Re: Как поменять цвет фона на цвет текста?

Извиняюсь за своё невежество, у вас полная палитра цветов в процедуре?

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

5

Re: Как поменять цвет фона на цвет текста?

AlexeyE30 пишет:

у вас полная палитра цветов в процедуре?

Каких именно цветов? Цветов выделения? Да, полная. Их всего 16

Лучше день потерять — потом за пять минут долететь!

6

Re: Как поменять цвет фона на цвет текста?

viter.alex пишет:

...Выдаёт ошибку...

Надо добывить проверку, чтобы отбросить HighlightColorIndex = 9999999 (не определен) и wdByAuthor (-1). И цветов в wdColorIndex вроде 17: от wdAuto (0) до wdGray25 (16), а в вашем массиве только 16.

Макросы под заказ и готовый пакет - mtdmacro.ru

7

Re: Как поменять цвет фона на цвет текста?

Вождь пишет:

Надо добывить проверку.

Дело не в проверке, просто задать цвет числом не получается:

Selection.Font.ColorIndex = 16711680

даёт ошибку, хотя это точное значение константы

Лучше день потерять — потом за пять минут долететь!

8

Re: Как поменять цвет фона на цвет текста?

Так свойство ColorIndex имеет тип WdColorIndex - это значения от -1 до 16. Наверное, надо использовать цвет фона. Пример:

Selection.Font.Shading.BackgroundPatternColor = 16711680
Макросы под заказ и готовый пакет - mtdmacro.ru