前提・実現したいこと
袋文字を作るマクロを作るため、テキストボックスや表などの中にあるテキストの輪郭の太さを変更したい
発生している問題・エラーメッセージ
袋文字を作るマクロを作成しているのですが、その際にいくつかの問題に直面しましたので質問させていただきます。 以下に記すような4種類のマクロを各々実行した場合、下の3つではエラーメッセージは出ませんがマクロ処理が完了しても値が変更されません(ローカルウィンドウでも値が変化していないことを確認しています)。PowerPointのバージョンやOSなど動作環境の問題なのか、VBA側のバグなのか分からず悩んでいます。
該当のソースコード
VBA
1 2Sub outline1() 3With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Font.Line 4 .Visible = msoTrue 5End With 6End Sub 7 8上記のように、予め手動で「テキストの輪郭なし」に設定したテキストボックスやオートシェイプ内のテキストに対して「輪郭あり」に変更するマクロを実行すると、輪郭が出現します。 9 10Sub outline2() 11With ActiveWindow.Selection.ShapeRange.TextFrame.TextRange.Font.Line 12 .Visible = msoFalse 13End With 14End Sub 15 16しかし上記のように、「テキストの輪郭あり」に設定したテキストに対して「輪郭なし」に変更するマクロを実行しても、輪郭が消えません。 17また、テキストが表中にある場合、 18 19Sub table1() 20With ActiveWindow.Selection.ShapeRange.Table.Columns(1).Cells(1).Shape.TextFrame.TextRange.Font 21 .Line.Visible = msoTrue 22 .Line.Transparency = 0 23 .Line.Weight = 10 24End With 25End Sub 26 27のように表中の特定のセル内のテキストを予め手動で「輪郭なし」に指定しておいて上記のマクロを実行しても輪郭が出現せず太さも10ptになりません(visible, transparency, weightをそれぞれ個別にも試しましたが全て無視されます) 28同様に、 29 30Sub table2() 31With ActiveWindow.Selection.ShapeRange.Table.Columns(1).Cells(1).Shape.TextFrame.TextRange.Font 32 .Line.Visible = msoFalse 33 .Line.Transparency = 1 34 .Line.Weight = 1 35End With 36End Sub 37 38のように特定のセル内のテキストを予め手動で「輪郭あり」に指定しておいて上記のマクロを実行しても輪郭が消えず太さも1ptになりません(visible, transparency, weightをそれぞれ個別にも試しましたが全て無視されます) 39
試したこと
上に記したように、各行を個別にも試しましたが、テキストボックスやオートシェイプ内のテキストでは「輪郭あり」から「輪郭なし」への変換だけが行えず、表中のテキストについてはテキストの輪郭に関する操作全般が無視されてしまいます。下に記した2つの動作環境で試しましたが、Windows環境ではTextFrameをTextFrame2とする必要があった他は全く同様な挙動でした。
補足情報(FW/ツールのバージョンなど)
動作環境1
Microsoft PowerPoint for Mac 2019 Ver 16.28
Microsoft Visual Basic for Applications 7.1
macOS Mojave ver 10.14.6
動作環境2
Microsoft PowerPoint standard 2010 Ver 14.0.1715.1000 32bit
Microsoft Visual Basic for Applications 7.0
Windows 7 Professional Ver 6.1
あなたの回答
tips
プレビュー