Hola Angeles y Jessuss (aunque mi respuesta parece que no le va mucho a éste...)
Yo puede decirse que tengo precisamente la especialidad de hacer informes con Word desde VB, porque la mayoría de mis aplicaciones van dirigidas a la confección de informes personalizados (Alta Hospitalaria, por ejemplo)
Te adjunto una plantilla, que el usuario actualiza y modifica con Word siempre que quiera. Luego toma la plantilla que le convenga y se rellena automáticamente el informe haciendo sustitución de eso que llamo pseudomacros, y que consisten en 6 caracteres precedidos y seguidos de @.  Por ejemplo @PACNOM@ para Nombre del paciente, @PACDOM@ para el Domicilio del paciente....
El usuario tiene una lista de todas las pseudomacros que puede incluir en cada plantilla, y en todo caso al hacer la conversión se preve que pueda haber incluido algún grupo NO RECONOCIBLE...
La conversión la hago así:
    lFallo = False
    MousePointer = vbHourglass
    strText = ""
    nHandle% = FreeFile
    Open wFich For Input As #nHandle%
    Do While Not EOF(nHandle%)
        Line Input #nHandle%, strBuffer
        strText = strText & strBuffer & vbCrLf
    Loop
    Close #nHandle%
  
    If recPac!idsexo = 1 Then
        cSex = "o"
    Else
        cSex = "a"
    End If
    
    Do While True
        n = InStr(strText, "@")
        If n = 0 Then Exit Do
        
        cTit = " "
        If Mid(strText, n, 1) = "@" Then
            cMacro = UCase(Mid(strText, n, 8))
            If cMacro = "@ANTFAM@" Then
                If Trim(frmPaci.txtAf(0).Text) <> "" Then
                    cTit = frmPaci.txtAf(0).Text
                End If
                If Trim(frmPaci.txtAf(1).Text) <> "" Then
                    cTit = cTit & "; " & frmPaci.txtAf(1).Text
                End If
            ElseIf cMacro = "@ANTPER@" Then
                If Trim(frmPaci.txtAp(0).Text) <> "" Then
                    cTit = frmPaci.txtAp(0).Text
                End If
                If Trim(frmPaci.txtAp(1).Text) <> "" Then
                    cTit = cTit & "; " & frmPaci.txtAp(1).Text
                End If
                If Trim(frmPaci.txtAp(2).Text) <> "" Then
                    cTit = cTit & "; " & frmPaci.txtAp(2).Text
                End If
ELSEIF cMacro.........
Reviso a ver si se encuentra cada una de las macros que tengo diseñadas y defino por qué texto ha de ser sustituida...
                
                If cTit = "" Then
                    x = MsgBox("El documento de 'Infor-Altas' estaba en blanco.", vbInformation)
                    cTit = " "
                End If
                recInf.Recordset.Delete
                recInf.Recordset.Update
                recInf.Recordset.Bookmark = recInf.Recordset.LastModified
                
            Else
                x = MsgBox("Revise la Plantilla " & SelFile.FileName & " :" & Chr(10) & _
                         "Ha introducido como ""macro"" la palabra " & cMacro & Chr(10) & _
                         "y no ha diseñado la SQL de conversión para tal ""macro"".", vbCritical)
                lFallo = True
                Exit Do
            End If
        End If
'  AQUÍ SE SUSTITUYE LA PSEUDOMACRO POR LO QUE CADA UNA SIGNIFICA...        
        strPost = Mid(strText, n + 8)
        strPrem = Left(strText, n - 1)
        strText = strPrem & cTit & strPost
    Loop
    
    If lFallo Then
        DeleteAFile (wFich)
        wFich = ""
        MousePointer = vbDefault
        Exit Function
    ElseIf Dir(tFich) <> "" Then
        DeleteAFile (tFich)
    End If
    
    nHandle% = FreeFile
    Open wFich For Output As #nHandle%
    Print #nHandle%, strText
    Close #nHandle%
    MousePointer = vbDefault
Espero que puedas adaptar estos datos a tu programa y que la idea te sirva... 
Y en todo caso sabes que estoy a tu disposición, con mi afectuoso saludo