That could only be happening to your second example if it spanned more than one line. The code specifically tests how many lines the content in each cell spans. Perhaps you have an extraneous paragraph break/line break there? Or are you doing this in the mailmerge main document instead of to the output?
For a generalised mailmerge solution, you might use something like:
Code:
Sub MailMergeToDoc()
Application.ScreenUpdating = False
Dim Tbl As Table, Cll As Cell, Par As Paragraph, sCllWdth As Single, sParWdth As Single
With ActiveDocument
With .Tables(1).Cell(1, 1)
sCllWdth = .Width - .LeftPadding - .RightPadding
With .Range.Paragraphs(1)
sCllWdth = sCllWdth - .LeftIndent - .RightIndent
End With
End With
End With
.MailMerge.Execute
End With
With ActiveDocument
For Each Tbl In .Tables
For Each Cll In Tbl.Range.Cells
If Len(Cll.Range) > 2 Then
For Each Par In Cll.Range.Paragraphs
With Par.Range
sParWdth = .Characters.Last.Previous.Information(wdHorizontalPositionRelativeToPage) _
- .Characters.First.Information(wdHorizontalPositionRelativeToPage)
If sParWdth > sCllWdth Then .FitTextWidth = sCllWdth
If .Characters.Last.Previous.Information(wdVerticalPositionRelativeToPage) > _
.Characters.First.Information(wdVerticalPositionRelativeToPage) Then .FitTextWidth = sCllWdth
End With
Next
End If
Next
Next
End With
Application.ScreenUpdating = True
End Sub
The above code processes cell content by paragraph, rather than just the whole cell. Not only does this code cater for wrapped lines, it also caters for cells whose content exceeds the cell width where someone has turned line-wrapping off.
The only caveat is that every intended new line in the cells is created by a paragraph break rather than a manual line break.