Programación General > Visual Basic 6.0 e inferiores
Re: VB con Word
angelescj:
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:
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:
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:
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
Majuhemo:
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;
Navegación
[#] Página Siguiente
Ir a la versión completa