should do the job, but you should do this before unloading the form and certainly not after closing the Excel application.
Unload the form in the code that calls the userform.
Change the command button code to
Private Sub CommandButton1_Click()
Me.Hide
Me.Tag = 1
End Sub
and the main code to
Sub Macro1()
Dim oFrm As New UserForm1
Dim applWord As Object
Dim docWord As Object
Dim checksRange As Range, i As Long, StrChecks As String
With oFrm
.Show
If .Tag = 1 Then
Set applWord = CreateObject("Word.Application")
applWord.Visible = True
applWord.WindowState = 1
Set docWord = applWord.Documents.Add
docWord.Content.InsertAfter "These are the animals you have selected...sdkfnskdfskfn" & vbNewLine
For i = 0 To .ListBox2.ListCount - 1
.ListBox2.Selected(i) = True
StrChecks = StrChecks & .ListBox2.List(i, 0) & "|"
Next
docWord.Content.InsertAfter vbNewLine & Replace(Left(StrChecks, Len(StrChecks) - 1), "|", ", " & vbNewLine) & "."
docWord.CheckSpelling
docWord.Range.Copy
End If
End With
Unload oFrm
'Close the workbook here
End Sub