Sorry got a lot on at the moment, can you try:
#include <Array.au3>
#include <Word.au3>
Local $oWord = _Word_Create()
Local $sDocument = @ScriptDir & "\WordFile.docx"
Local $oDoc = _Word_DocOpen($oWord, $sDocument, Default, Default, True)
Local $oFindRange, $oLastRange, $oNextRange, $i = 0
$oWord.Selection.HomeKey($wdStory)
Local $aHeadings[0]
For $j = 1 To $oDoc.Paragraphs.Count
If StringInStr($oDoc.Paragraphs($j).Range.text, ", ") And $oDoc.Paragraphs($j).Range.Bold = True Then
$i += 1
If $i = 1 Then
$oNextRange = $oDoc.Paragraphs($j + 1).Range
$oLastRange = $oDoc.Paragraphs($i).Range
ElseIf $i > 1 Then
$oNextRange = $oDoc.Paragraphs($j + 1).Range
$oDoc.Paragraphs($j).Range.Cut
$oRange = $oDoc.Range($oLastRange.End, $oLastRange.End)
$oRange.Paste
$oLastRange = $oDoc.Paragraphs($i).Range
EndIf
$oDoc.Paragraphs($i).Range.InsertBefore($i)
$oDoc.Range($oDoc.Paragraphs($i).Range.Start, $oDoc.Paragraphs($i).Range.Start + 1).Font.Superscript = True
$oFindRange = _Word_DocFind($oDoc, ", ", -1, $oDoc.Paragraphs($j).Range)
If Not @error Then
$oRange = _Word_DocRangeSet($oDoc, $oFindRange, Default, Default, $wdCharacter, 0)
$oRange.Delete
$oRange.InsertBreak($wdLineBreak)
EndIf
EndIf
If IsObj($oNextRange) And StringInStr($oNextRange.text, "; ") Then
$oFindRange = $oNextRange
$oFindRange.Find.ClearFormatting
$oFindRange.Find.text = "; "
$iEndRange = $oFindRange.End
Do
$oFindRange.Find.Execute
If $oFindRange.Find.Found Then
$oFindRange.Text = $i & $oFindRange.Text
$oFindRange.Start = $oFindRange.Start
$oFindRange.End = $oFindRange.Start + 1
$oFindRange.Font.Superscript = True
$oFindRange.Start += 2
$oFindRange.End = $iEndRange
EndIf
Until $oFindRange.Find.Found = False
$oDoc.Range($oDoc.Paragraphs($i + $i).Range.Start, $oDoc.Paragraphs($i + $i).Range.End - 1).InsertAfter($i)
$oDoc.Range($oDoc.Paragraphs($i + $i).Range.End - 2, $oDoc.Paragraphs($i + $i).Range.End - 1).Font.Superscript = True
EndIf
Next