KB0206: thinkcell が誤ったフォント色を使用する
問題
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 が提供するメインのフォント色を示します。
- 影響を受ける PowerPoint ファイルを開き、Alt + F11 で VBA エディターを開きます
- VBA エディターでプレゼンテーションを選択し、Insert > New module をクリックします
- 次のマクロを貼り付け、VBA エディターを閉じます
- PowerPoint のプレゼンテーション ウィンドウで、Alt + F8 を押して Macro ウィンドウを開きます
- 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 プレゼンテーションのスライド マスターに不足しているプレースホルダーを挿入します。
- スライド マスターを開きます: PowerPoint > View > Master Views > Slide Master
- サムネイルのサイドバーで最上位のスライドに移動します
- ほとんどの場合、不足している Text および/または Title プレースホルダーを挿入することで問題を解決できます:
Master Layout > Master Layout > Text および/または Title にチェックを入れます> OK - スライド マスターを閉じます: Close > Close Master View
- 新しいグラフを挿入するか、既存のグラフを新しい位置にドラッグするなどして更新します
その後も問題が発生する場合は、これらの手順を繰り返し、手順 3 ですべての不足しているプレースホルダーにチェックを入れてください。テンプレートまたはプレゼンテーションには、影響を受けるスライド マスターが複数含まれている場合があります。そのすべてに回避策を適用してください。
この回避策を PowerPoint テンプレートに含めるか、PowerPoint テンプレートの担当者に連絡して既定のテンプレートを更新してもらうことをお勧めします。
お客様の会社が Microsoft Office Support 契約を結んでおり、ご利用の Office バージョンについても Microsoft に修正を依頼したい場合は、弊社の Microsoft ケース番号 116080514511540 を参照してください。
サポートに問い合わせる
修正済みの Office バージョンを使用している、または回避策を適用したにもかかわらず、thinkcell が正しいフォント色を使用しない場合は、サンプル スライドを 弊社サポート チーム までお送りいただき、ご希望のフォント色をお知らせください。