Perhaps try this:
Sub ConvertLatinToComplex() Dim rng As Range Dim i As Long Dim charCode As Integer Set rng = ActiveDocument.Content ' Loop through each character in the document For i = rng.Characters.Count To 1 Step -1 ' Loop backwards to avoid index issues after changes charCode = AscW(rng.Characters(i).Text) ' Check if the character is within the Latin Unicode range (Basic Latin and Latin-1 Supplement) If (charCode >= 32 And charCode <= 255) Then ' Basic Latin and Latin-1 Supplement ' Check if the character is not a control character. If (charCode >= 32) Then ' Convert character to complex script. This forces Word to re-evaluate the character ' and treat it as complex if applicable. rng.Characters(i).Text = ChrW(charCode) & ChrW(8206) ' Add Left-to-Right Mark rng.Characters(i).Characters(1).Delete ' Delete the added Left-to-Right Mark End If End If Next i Set rng = Nothing End Sub