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の提供する主要なフォントの色が示されます。
- 影響のあるPowerPointのファイルを開き、Alt + F11でVBAエディターを開きます
- VBAエディターでプレゼンテーションを選択し、挿入 → 新しいモジュールをクリックしてください
- 以下のマクロを貼り付け、VBAエディターを閉じます
- PowerPointプレゼンテーション ウィンドウでAlt + F8を押し、[マクロ] ウィンドウを開きます。
- [デモンストレーション] を選択し、[実行] をクリックします
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 → [表示] → [マスター表示] → [スライドマスター]
- サムネイル サイドバーでトップ レベルのスライドに進みます
- ほとんどの場合、欠けている [テキスト] および/または [タイトル] のプレースホルダーを挿入すると、この問題は解決できます。
[マスターレイアウト] → [マスターレイアウト]と進み、[テキスト] および/または [タイトル]にチェックを付けて[OK]を選択します。 - スライド マスターを閉じます:[閉じる] → [マスター表示を閉じる]
- 新しいグラフを挿入するか、既存のグラフを更新します(たとえば、新しい位置にドラッグ)
その後も問題が続く場合は、これらの手順を繰り返しますが、ステップ3でかけているプレースホルダーすべてをチェックします。テンプレートまたはプレゼンテーションには、影響を受けたスライド マスターが複数含まれている可能性があります。このすべてに回避策を適用してください。
お使いになっているPowerPointテンプレートにこの回避策を含めるか、PowerPointテンプレートの責任者に連絡して既定のテンプレートを更新してもらうとよいかもしれません。
貴社にMicrosoft Officeサポートの連絡先があり、お使いのOfficeバージョンの修正をMicrosoftに依頼する場合は、ケース番号116080514511540を使用してください。
サポートに問い合わせ
修正済みのOfficeバージョンを使用するか回避策を適用しても、think-cellがまだ正しいフォントの色を使用しない場合は、スライドの例を弊社サポート チームに送り、ご希望のフォントの色をお知らせください。