文字スタイルの変更が発生するテキスト内のポイントをリストするように MS Word をプログラミングする方法はありますか?
プログラムで段落を分析して、同じスタイルを持つ連続したテキスト ブロックをすべて取得しようとしています。つまり、テキスト スタイルが変化するポイントで段落を分割します。現時点で私が行っている方法は、各文字を取得し、そのスタイルを前の文字と比較することです。スタイルの名前が異なる場合、結果を分割するポイントを見つけたことがわかります. それは機能しますが、非常に非効率的です (すべての文字について、スタイル名の完全な文字列比較を行う必要があります)。Word オブジェクト モデルで、すべての文字を比較せずにこの問題を解決する方法があるかどうか疑問に思っています。
私が現在使用しているおおよそのコードは次のとおりです (これは C# コードです: Word 2003 に対して COM Interop を使用していますが、VBA でのソリューションにも同様に満足しています。 C# への変換は簡単なはずです。)
// used to store the results as we go
StringBuilder currentText = new StringBuilder();
string currentStyle = null;
// range contains the Range I want to split up
foreach (Range charRng in range.Characters)
{
string style = charRng.get_Style().NameLocal;
if (style == currentStyle)
{
currentText.Append(charRng.Text);
}
else
{
AddTextBlockToMyResults(currentStyle, currentText.ToString());
currentText = new StringBuilder(charRng.Text);
currentStyle = style;
}
}
AddTextBlockToMyResults(currentStyle, currentText.ToString());