まず第一に、私はこのコードをテストすることができなかったので、それが機能することを約束しません!私はこれを提供しますが、私の答えがAFAIKであることを率直に伝えたいと思います。
とはいえ、段落オブジェクト(必要な太字と斜体の情報を含む)を文字列オブジェクト(太字または斜体の情報を含まない)に変換しているため、現在行っていることは機能しません。つまり、失います。太字/斜体の情報があるかどうかをテストする前に!.Range.Textプロパティを使用する代わりに、.Rangeプロパティを使用するだけです。コードは次のようになります。
foreach (Word.Paragraph objparagraph in document.Paragraphs)
{
int TRUE_CODE = 1; // I do NOT know if this is correct, it could be another number!
Range rWords = objparagraph.Range.Text;
foreach (Range word in rWords.Words
if (word.Bold == TRUE_CODE)
{
// handle bold case
}
if (word.Italic == TRUE_CODE)
// handle italic case
}
}
}
私はこのコードをテストしていないので、正しくするために微調整が必要になる可能性があることに注意してください。特に、word.Boldとword.Italicはtrueまたはfalseを返しますが、そうではありません。代わりに、3つのもののいずれかを表す整数を返します。
true - the word is bold (or italic)
false - the word is _not_ bold (or italic)
wdUndefined - the word is something else (combination, etc.)
(これに関するドキュメントについては、以下のリンクを参照してください)問題は、各カテゴリにどの整数が含まれるかわからないことです。上記のコードスニペットでは、1がtrueにマップされると想定していますが、これは正しくない可能性があります。うまくいけば、それはあなたが始めるのに十分です。ハッピーコーディング!
http://msdn.microsoft.com/en-us/library/microsoft.office.interop.word.range.bold.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1