• Domingo 22 de Diciembre de 2024, 13:42

Autor Tema:  Re: VB con Word  (Leído 2564 veces)

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: VB con Word
« en: Martes 27 de Mayo de 2003, 11:23 »
0
Hola :
Estoy intentando enviar texto a un documento de Word, es una tabla qu utilizo como plantilla, y no me aclaro. El documento lo abro y lo grabo, pero no soy capaz de poner el texto quer yo quiero el el lugar que le corresponde.
Agradecería cualquier tipo de ayuda.
Angeles :hitcomp:

Jessuss

  • Miembro activo
  • **
  • Mensajes: 49
    • Ver Perfil
Re: VB con Word
« Respuesta #1 en: Martes 27 de Mayo de 2003, 13:23 »
0
Hola angelescj, yo estoy haciendo algo parecido y me estoy rompiendo la cabeza, yo he empezado con abrirme un fichero e ir leyendo de la BD para luego escribir en él con print#, "Texto".

Me falta por cuadrar las palabras en el texto pero por lo menos algo escribo, mi BD está compuesta por las palabras que tiene el texto, la linea en la que están y su posicion final e inicial dentro del texto original, voy poco a poco y aun no he conseguido todo, pero bueno.

No se si esto te servirá para algo pero yo te lo cuento por si acaso.

Si consigo al final el fin te lo hago saber

Saludos
:comp:

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: VB con Word
« Respuesta #2 en: Martes 27 de Mayo de 2003, 14:15 »
0
Gracias por contestar, pero creo que mi problema es diferente. Yo tengo un documento de Word, que contiene una tabla y quiero, desde VB, abrirlo y escribir en él,ya que una serie de datos los tengo. Lo que no sé hacer es cómo enviarle esos datos y que además los ponga donde yo quiero.
:hitcomp:

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: VB con Word
« Respuesta #3 en: Martes 27 de Mayo de 2003, 17:48 »
0
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
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Majuhemo

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
Re: VB con Word
« Respuesta #4 en: Martes 27 de Mayo de 2003, 18:29 »
0
Hola:
yo hago de la sgte manera:
Hago mi plantilla en word y a las celdas le inserto marcadores y desde vb hago lo siguiente:

Set obj = New Word.Application
obj.Documents.Open FileName:="" & App.Path & "Plantilla.doc"
obj.Selection.GoTo What:=wdGoToBookmark, Name:="marcador01"
obj.Selection.TypeText Text1.Text

obj.ActiveDocument.SaveAs FileName:="" & App.Path & "Plantilla_X.doc"
obj.Quit SaveChanges:=wdDoNotSaveChanges

set obj = nothing

 y con este codigo me pasa los datos sin problemas.

Saludos;
Ruben Delgado A.
rudela@msn.com
Lima-Peru

angelescj

  • Miembro MUY activo
  • ***
  • Mensajes: 154
    • Ver Perfil
Re: VB con Word
« Respuesta #5 en: Martes 27 de Mayo de 2003, 18:55 »
0
Muchas gracias a los dos. Me habéis resulto el problema.
:jumpie:

J.M.Movilla

  • Miembro MUY activo
  • ***
  • Mensajes: 427
    • Ver Perfil
Re: VB con Word
« Respuesta #6 en: Martes 27 de Mayo de 2003, 22:57 »
0
Con esto queda demostrado lo bueno que es participar... porque a los que nos gusta dar, también nos gusta recibir... Y hoy Majuhemo me ha dado una solución que ni siquiera se me había ocurrido investigar, porque ya tenía yo mi solución que "yo creía que era buena hasta que vi la tuya..."

Gracias y saludos

Majuhemo

  • Miembro activo
  • **
  • Mensajes: 85
    • Ver Perfil
VB con Word
« Respuesta #7 en: Miércoles 28 de Mayo de 2003, 15:31 »
0
Gracias compañeros,
definitivamente el fin de este foro es compartir experiencias y conocimientos, y eso es lo que trato de hacer.

Saludos; :beer:
Ruben Delgado A.
rudela@msn.com
Lima-Peru