ナレッジ ベース KB0206

think-cellが誤ったフォントの色を使用する

問題

think-cellが、PowerPointテンプレートで定義されている主要なテキストの色を使用しません。

解決策

この問題はPowerPointのバグが原因でした。2017年7月の時点で、MicrosoftはOffice 365とOffice 2016で問題を修正しました。Office 365とOffice 2016 クイック実行エディションは、バージョン1706(ビルド8229.2073)への更新で修正プログラムを受領しました。MSIベースのOffice 2016エディションの修正プログラムがKB3203481に含まれました。

説明とOfficeバージョンが修正されていない場合の回避策

think-cellは、PowerPointテンプレートのフォントの色に基づいて、正しいフォントの色を判定しようとします。スライド マスターのトップ レベルのスライドで一部のプレースホルダーが欠けている場合、バグが含まれているPowerPointのバージョンはフォントの色の誤った値をthink-cellに伝えます。think-cellを使用していない場合でも問題は再現できます。

think-cellを使用しないで再現

以下のマクロは、PowerPointのスライド マスターの各TextStyleLevelの結果的なフォントの色の値を示すテキストボックスのある新しいスライドを挿入します。"TextStyleLevel[1]"には、PowerPointの提供する主要なフォントの色が示されます。

  1. 影響のあるPowerPointのファイルを開き、Alt + F11でVBAエディターを開きます
  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.Master
    
    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 " & vbCrLf
        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)" & vbCrLf & vbCrLf
        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) & vbCrLf & vbCrLf
                txtrng2.Font.Fill.ForeColor.RGB = nRgb
            Else
                txtrng2.Text = "ObjectThemeColor: " & col.ObjectThemeColor _
                & vbCrLf & vbCrLf
                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サポートの連絡先があり、お使いのOfficeバージョンの修正をMicrosoftに依頼する場合は、ケース番号116080514511540を使用してください。

サポートに問い合わせ

修正済みのOfficeバージョンを使用するか回避策を適用しても、think-cellがまだ正しいフォントの色を使用しない場合は、スライドの例を弊社のサポート チームに送り、ご希望のフォントの色をお知らせください。