Trabajando con macros de EXCEL he logrado que un fichero txt generado desde Velneo lo escriba en determinadas celdas y a continuación me enlaza con un documento word en donde tengo definidos marcadores y me abre el documento word con la información que previamente salio de Velneo
El paso a través de Excel es invisible
Estoy contento pero me gustaria efectuar este enlace a traves vbScript, quise intentarlo a través del tutorial vbScript pero me lio y no sigo.
Set objWord = CreateObject("Word.Application")
objWord.Visible = False
Set objDoc = objWord.Documents.Open("ruta_a_mi_documento_word.doc")
Set objRange = objDoc.Bookmarks("nombre_de_mi_marcador").Range
objRange.Text = "Texto que incrusto en el marcador"
objWord.Quit
Pero hay alternativas mucho más interesantes para crear documentos de cualquier formato y multiplataforma.
Buenas noches:
.
Estoy trasteando con este tema de los documentos de Word. Funciona bien cuando el nombre del fichero, marcador y contenido son textos fijos entre comillas simples.
.
Intentando utilizar variables o campos para el nombre del fichero, marcador o contenido no consigo hacerlo funcionar.
.
¿Cómo utilizais campos o variables en estos scripts?.
.
Gracias anticipadas.
.
Un saludo,
.
Fran.
EfeUno Consultores de Gestión y Software,S. L. www.efeuno.org
Estoy utilizando este sistema para crear un documento Word, todo bien, pero tengo problemas con un campo que es de texto enriquecido, me podéis ayudar como tengo que pasar los datos del campo con texto enriquecido. He probado de mil maneras, pero nada.
Con el texto enriquecido lo vas a tener más difícil, porque internamente es código HTML, por lo que no lo podrás usar con esas instrucciones. La única forma que veo de pasarlo es: 1) Quitar las etiquetas HTML, convirtiéndolo en texto plano, 2) Eliminando los saltos de línea que pueda tener y 3) pasarlo al documento como si fuera un texto normal. Pero… lógicamente, pierdes todo el formato que pueda tener el texto (negritas, cursivas, tipos de letra) y los saltos de línea.
Pero todo esto que estoy montando es para crear un Catalago de Consentimientos, en total son unos 18 consentimientos que tiene la Clínica, y por cada uno de estos Consentimientos hay 8 Apartados que el Usuario final tiene que escribir para crear el Consentimiento que el Cliente de la Clínica deberia firmar.
La forma que veo y que me explicas, la operativa entiendo que de oculta para el Usario final no lo es nada, y además hacer ocho veces esa operativa no termino de tenerlo Claro.
NOTA: Mientras he puesto la anterior entrada en este Foro, he cambiado los campos de Enriquecidos a normales, y ahora me encuentro que falla porque al haber saltos de linea en los campos, el generador da fallo.
(Madre mia, todo se va al traste, por unos simples saltos de linea. No me lo puedo creer)
Los Apartados son fijos, pero adaptables a cada Consentimiento, es decir, los apartados para una Liposucción son 8 pero son diferentes a los otros 8 de un Consentimiento de una Rinoplastia.
Donde son iguales en todos los Consentimiento es en la parte final, donde van los datos del paciente, y las firmas.
Por eso de montar un documento .DOC como plantilla, y de esa manera a trabes de una tabla de Consentimientos el Usuario del programa solo tenia que seleccionar que Consentimiento tiene que generar al Paciente en cuestión.
Y de todos los campos que tengo en dicha tabla, todos los que son campos Alfanuméricos, no hay ningún problema en pasarlo al DOC a través de los Marcadores insertados en dicho DOC. Pero todos aquellos campos que son Objeto.Texto son los quedan el problema.
Si veo que no puedo utilizar este sistema, probare tu alternativa, y mirar de utilizar vReport
Otra opción es un doc por cada tipo de operación y así rellenas solo los nombres, es algo que se hace una vez y ya está.
En lugar del usuario elegir cada vez los consentimientos, es tener una tabla de operaciones y asignar los consentimientos. Estos serán el detalle de un informe y a su vez los datos del paciente.
Eso también lo pense al principio, en el momento de analizar y decidir el montaje, y quise que los consentimientos fueran los más configurables para el Usuario final, y que además no necesitaran de mi para crear más consentimientos, ya que con el sistema que ya tenia montado con una sola plantilla DOC el usuario siguiendo cada apartado del consentimiento solo tenia que ir rellenando y listos.
Dos aclaraciones primero.
1º - La macro que te he propuesto se ejecuta con el Word oculto y el Usuario no ve nada hasta el final, que es cuando mostramos el Consentimiento listo para imprimir. Incluso no es necesario mostrar el documento Word, simplemente se guarda y se imprime para que lo firme el paciente.
2º- Los retornos de carro en VBScript se consideran un caracter especial. Debes usar la expresión chr(13) + chr(10) o la constante vbCrLf.
De todas formas, como indica Manuel, si no tienes obligación de usar una plantilla Word, la mejor solución es VReport.
La automatización de Word con Velneo no es precisamente un camino de rosas.
Rem ( Muestra un mensaje con el motor de Scripts WSH )
Set ( CMENSAJE, "Mensaje desde la Aplicación Velneo\nLa \c\cHora\c\c actual es: " + currentTime() +
"\n\nCaché del cliente: " + sysCacheClientPath )
Libre
Rem ( Sustituimos los retornos por la constante vbCrLf de VBScript)
Set ( CMENSAJE, replaceString(CMENSAJE, "\n", "\c + vbCrLf + \c") )
Libre
Rem ( Construimos el código VBScript y ejecutamos)
Set ( CCODIGO, "MSGBOX (\c" + CMENSAJE + "\c)" )
Set ( LOK, fun:FUN_WSH_EJECUTAR@MiApp.app(CCODIGO) )
El código VBScript queda:
MSGBOX (“Mensaje desde la Aplicación Velneo” + vbCrLf + “La ““Hora”” actual es: 11:10” + vbCrLf + “” + vbCrLf + “Caché del cliente: C:/Users/yo/Velneo/cacherun/127.0.0.1/”)