KB0206: thinkcell が誤ったフォント色を使用する

  1. ホーム
  2. リソース
  3. ナレッジ ベース
  4. KB0206

問題

thinkcell が PowerPoint テンプレートで定義されている本文の色を使用しません。

解決策

この問題は PowerPoint のバグが原因でした。2017 年 7 月時点で、Microsoft は Office 365 および Office 2016 でこの問題を修正しました。Office 365 および Office 2016 のクイック実行版には、 Version 1706 (Build 8229.2073) への更新で修正が適用されました。Office 2016 の MSI ベース版向けの修正は KB3203481 に含まれています。

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

thinkcell は、PowerPoint テンプレートで提供されているフォント色に基づいて、正しいフォント色を特定しようとします。このバグを含む PowerPoint バージョンでは、スライド マスターの最上位スライドに一部のプレースホルダーがない場合、フォント色について誤った値が thinkcell に渡されます。この問題は thinkcell なしでも再現できます。 もっと読む

thinkcell を使用しない再現手順

次のマクロは、PowerPoint のスライド マスターの各 TextStyleLevel について、結果として得られるフォント色の値を表示するテキストボックスを含む新しいスライドを挿入します。「TextStyleLevel[1]」は、PowerPoint が提供するメインのフォント色を示します。

  1. 影響を受ける PowerPoint ファイルを開き、Alt + F11 で VBA エディターを開きます
  2. VBA エディターでプレゼンテーションを選択し、Insert > New module をクリックします
  3. 次のマクロを貼り付け、VBA エディターを閉じます
  4. PowerPoint のプレゼンテーション ウィンドウで、Alt + F8 を押して Macro ウィンドウを開きます
  5. Demonstrate を選択し、Run をクリックします
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 > View > Master Views > Slide Master
  2. サムネイルのサイドバーで最上位のスライドに移動します
  3. ほとんどの場合、不足している Text および/または Title プレースホルダーを挿入することで問題を解決できます:
    Master Layout > Master Layout > Text および/または Title にチェックを入れます> OK
  4. スライド マスターを閉じます: Close > Close Master View
  5. 新しいグラフを挿入するか、既存のグラフを新しい位置にドラッグするなどして更新します

その後も問題が発生する場合は、これらの手順を繰り返し、手順 3 ですべての不足しているプレースホルダーにチェックを入れてください。テンプレートまたはプレゼンテーションには、影響を受けるスライド マスターが複数含まれている場合があります。そのすべてに回避策を適用してください。

この回避策を PowerPoint テンプレートに含めるか、PowerPoint テンプレートの担当者に連絡して既定のテンプレートを更新してもらうことをお勧めします。

お客様の会社が Microsoft Office Support 契約を結んでおり、ご利用の Office バージョンについても Microsoft に修正を依頼したい場合は、弊社の Microsoft ケース番号 116080514511540 を参照してください。

サポートに問い合わせる

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