If you are OK with just adding cells at the end of row (as opposed to unmerging specific cells) and setting the cell width to match existing columns, try the code below.
It errors on tables with vertically merged cells so might need to run SplitVerticalMerge (from the other thread) first.
Sub SplitHorizMerge()
Dim myTable As Table, myCell As Cell
Dim myRow As Row, maxCol As Long, maxColIndex As Long, myItem As Variant
Dim myCounter, OrigCellCount As Long
Dim CellsCol As New Collection
Set myTable = ActiveDocument.Tables(1)
With myTable
'identify row with highest number of cells
For Each myRow In .Rows
If myRow.Cells.Count > maxCol Then
maxCol = myRow.Cells.Count
maxColIndex = myRow.index
End If
Next
'collect the width for each cell in the row identified above
For Each myCell In .Rows(maxColIndex).Cells
CellsCol.Add myCell.Width
Next
'apply changes to table
For Each myRow In .Rows
With myRow
OrigCellCount = .Cells.Count
If .index = maxColIndex Then 'skip identified row
ElseIf OrigCellCount = maxCol Then 'skip rows that already have same number of cells
Else
'split last cell
.Cells(.Cells.Count).Split 1, maxCol - OrigCellCount + 1
For myCounter = 1 To maxCol
'set the width of each cell to match identified row
.Cells(myCounter).Width = CellsCol(myCounter)
' add some text into the newly added cells
If myCounter > OrigCellCount Then
.Cells(myCounter).Range.Text = .Cells(myCounter - 1).Range.Text & " <SplitCell>"
End If
Next
End If
End With
Next
End With
End Sub