I am not seeing that "exact" behavior (... number of inline characters ...). When I first ran the code it worked as expected. What I did see is if the "Italic" direct formatting extends to and includes the paragraph mark then the result is like you show. You might try:
Code:
Public Sub flatten()
Dim wPara As Word.Paragraph
For Each wPara In Word.ActiveDocument.Paragraphs
wPara.Range.Characters.Last.Select
On Error Resume Next
With Selection
.ClearCharacterDirectFormatting
.ClearCharacterStyle
End With
wPara.Style = ActiveDocument.Styles(wdStyleNormal).NameLocal
Next
End Sub