I have been using the following script which keeps the first seven word of the string and replaces the rest of it with ten dots, for example:

these first seven words will be kept and the rest of this sentence will be replaced with ten dots
these first seven words will be kept ..........

This script, though, halts once the string is less than seven (which can be modified as needed), thus I need:

1. to have the script modified to ignore and leave any string that has a number of words less than the required number (which is seven for now) without changing it or adding any dots to it.

2. to have the new modified script to be modified again as a second script to work from the end of the string, so it keeps the last seven words and replaces the rest of the string to the beginning with ten dots, accordingly our previous example will be:

.......... sentence will be replaced with ten dots

Sub KeepFirstSeven()
Dim sn, tempArr, tempArr2
Application.ScreenUpdating = False
sn = ActiveSheet.Range("X1", Range("X" & Rows.count).End(xlUp))
For i = 1 To UBound(sn)
    If sn(i, 1) <> vbNullString Then
        tempArr = Split(sn(i, 1), " ")
        For j = 0 To 6
            tempArr2 = tempArr2 & tempArr(j) & " "
        Next
        sn(i, 1) = tempArr2 & ".........."
    End If
    tempArr2 = vbNullString
Next
ActiveSheet.Range("Y1").Resize(UBound(sn)) = sn
Application.ScreenUpdating = True
End Sub
Can I get some precious help with these two requests?

Many thanks in advance ..
T.