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: