База знаний KB0206

надстройка think-cell использует неправильный цвет шрифта

Проблема

Надстройка think-cell не использует основной цвет шрифта, заданный в моем шаблоне PowerPoint.

Решение

Эта проблема возникает из-за программной ошибки в PowerPoint. В июле 2017 г. компания Microsoft исправила проблему в Office 365 и Office 2016. Выпуски Office 365 и Office 2016 «Нажми и работай» получили исправление с обновлением до версии 1706 (сборка 8229.2073). Исправление для выпуска Office 2016 на основе MSI было включено в состав KB3203481.

Пояснение и обходное решение, если ваша версия Office не получила исправление

Надстройка think-cell пытается определить правильный цвет шрифта, опираясь на цвета шрифтов, указанных в вашем шаблоне PowerPoint. Версии PowerPoint с программной ошибкой, сообщают надстройке think-cell неправильные значения цвета шрифтов, если в слайде верхнего уровня образца слайдов отсутствуют некоторые замещающие тексты. Эту проблему можно воспроизвести и без надстройки think-cell.

Воспроизведение ошибки без think-cell

Следующий макрос вставляет новый слайд с текстовым полем, в котором отображаются итоговые значения с цветами шрифтов для каждого TextStyleLevel из вашего образца слайдов PowerPoint. "TextStyleLevel[1]" — здесь отображается основной цвет шрифта, предоставленный PowerPoint.

  1. Откройте проблемный файл PowerPoint и запустите редактор VBA сочетанием клавиш Alt + F11
  2. В редакторе VBA выберите свою презентацию и нажмите ВставкаНовый модуль
  3. Вставьте следующий макрос и закройте редактор VBA
  4. В окне презентации PowerPoint нажмите Alt + F8, чтобы открыть окно Макрос
  5. Выберите Демонстрация и нажмите кнопку Запустить
Function AppendToTextRange(txtfrm2 As PowerPoint.TextFrame2) As Office.TextRange2
    Set AppendToTextRange = _
	txtfrm2.TextRange.Characters(txtfrm2.TextRange.Length + 1, 0)
End Function

Sub Demonstrate()
    Dim pres As PowerPoint.Presentation
    Set pres = ActivePresentation
    
    Dim sld As PowerPoint.Slide
    Set sld = pres.Slides.Add(pres.Slides.Count + 1, PowerPoint.ppLayoutBlank)
    sld.Select
    
    Dim mstr As PowerPoint.Master
    Set mstr = sld.Design.SlideMaster
    
    Dim shp As PowerPoint.Shape
    Set shp = sld.Shapes.AddShape(Office.msoShapeRectangle, 50, 50, _
    pres.PageSetup.SlideWidth / 2 - 50, pres.PageSetup.SlideHeight - 100)
    shp.Fill.ForeColor.RGB = RGB(255, 255, 122) 'light yellow backgound

    Dim txtfrm2 As PowerPoint.TextFrame2
    Set txtfrm2 = shp.TextFrame2
    
    Dim txtrng2 As Office.TextRange2
    Dim i As Integer
    i = 1
    Dim txtlvl As PowerPoint.TextStyleLevel
    For Each txtlvl In mstr.TextStyles(PowerPoint.ppBodyStyle).Levels
        Set txtrng2 = AppendToTextRange(txtfrm2)
        txtrng2.Text = "TextStyleLevel[" & i & "] has color " & vbCr
        txtrng2.Font.Fill.Solid
        txtrng2.Font.Fill.ForeColor.ObjectThemeColor = Office.msoThemeColorText1
        
        Set txtrng2 = AppendToTextRange(txtfrm2)
        Dim col As PowerPoint.ColorFormat
        
        Set col = txtlvl.Font.Color
        If PowerPoint.ppSchemeColorMixed = col.Type Then
            txtrng2.Text = "MIXED (should not occur)" & vbCr & vbCr
        Else
            If Office.msoNotThemeColor = col.ObjectThemeColor Then
                Dim nRgb As Long
                nRgb = col.RGB()
                txtrng2.Text = "RGB: " & (nRgb Mod 256) & "/" & ((nRgb \ 256) _
                Mod 256) & "/" & (nRgb \ 256 \ 256) & vbCr & vbCr
                txtrng2.Font.Fill.ForeColor.RGB = nRgb
            Else
                txtrng2.Text = "ObjectThemeColor: " & col.ObjectThemeColor _
                & vbCr & vbCr
                txtrng2.Font.Fill.ForeColor.ObjectThemeColor = col.ObjectThemeColor
            End If
        End If
        i = i + 1
    Next txtlvl
End Sub

Обходное решение

Вставьте недостающий замещающий текст в образце слайдов своей презентации PowerPoint:

  1. Откройте образец слайдов: PowerPoint → ВидРежимы образцовОбразец слайдов
  2. Перейдите к слайду верхнего уровня в боковой панели эскизов
  3. В большинстве случаев проблему можно решить, вставив недостающий замещающий Текст и/или Заголовок:
    Главный макетГлавный макет → установите флажок Текст и/или ЗаголовокOK
  4. Закройте образец слайдов: ЗакрытьЗакрыть режим образца
  5. Вставьте новую диаграмму или измените существующие диаграммы, например, перетащив их в новое место

Если проблема не разрешилась, пожалуйста, повторите описанные выше действия, но при этом установите флажки для всех недостающих замещающих элементов на шаге 3. Шаблоны и презентации могут содержать несколько проблемных образцов слайдов; примените обходное решение к каждому из них.

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

Если у вашей компании есть контракт на поддержку Microsoft Office и вы хотите попросить компанию Microsoft исправить также и вашу версию Office, пожалуйста, укажите нашу заявку о поддержке Microsoft с номером 116080514511540.

Обратитесь в службу поддержки

Если надстройка think-cell все еще не использует правильный цвет шрифта, хоть вы и работаете в исправленной версии Office или применили обходное решение, то, пожалуйста, отправьте нам пример такого слайда в наша группа поддержки и сообщите о том, какой цвет шрифта там должен быть.

Поделиться