SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: angelescj en Martes 27 de Mayo de 2003, 11:23
-
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:
-
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:
-
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:
-
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
-
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;
-
Muchas gracias a los dos. Me habéis resulto el problema.
:jumpie:
-
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
-
Gracias compañeros,
definitivamente el fin de este foro es compartir experiencias y conocimientos, y eso es lo que trato de hacer.
Saludos; :beer: