The code as listed cannot be expected to work properly work because flag has not been set.

In any case, I would try the code below, after you correct the flag issue, and decide whether you want to quit the instance of Word started in the procedure.

[VBA]
Public Sub ExcelWord()
Dim flag As String ' Should use a Boolean instead
Dim WdApp As Word.Application
Dim WdDoc As Word.Document
Set WdApp = CreateObject("Word.Application")
With WdApp
.Visible = True
wdmodelclfullname = "C:\Data\word\checklist.dot"
.Documents.Open wdmodelclfullname
With .ActiveDocument
.Unprotect
.Bookmarks("text3").Range.Text = "This is my text3"
.Bookmarks("text4").Range.Text = "This is my text4"
If flag = "Y" Then
.FormFields("Check10").CheckBox.Value = True
End If
.FormFields("dropdown1").Result = ActiveWorkbook.Worksheets(1).Range("C2").Value
.Protect Password:="", NoReset:=False, Type:=wdAllowOnlyFormFields
End With
.Quit 'Use if you want to shut down the instance of Word started here
End With
Set WdApp = Nothing
End Sub
[/VBA]