CORRECTOR ORTOGRAFIA WORD 2000 (API)

16/05/2005 - 19:10 por Alejandro | Informe spam
Hola amigos resulta que tengo una aplización desarrollada en Sybase para el
control de tiempos trabajados por algunos tipos de usuario administrativos.
Resulta que nos hemos dado cuenta que con mucha frecuencia los datos
ingresados por los usuarios tienen errores de ortografia y hemos
desarrollado un API que hace el llamado al corrector para que el usuario
tenga desde la apliación la posibilidad de corregir la ortografia.

Resulta que todo funciona bien pero cuando Word no esta abierto. Corrige
perfecto y hace los cambios bien. Cuando tengo algún documento abierto el
sistema me dice que no puede guardar los cambios en la Normal.dot despues de
que corrige la ortografia y me obliga a darle un nuevo nombre al archivo. Yo
pienso que tiene que ver con la modificación de esta plantillla pero no se
como arreglar el problema. Algo de simultaneidad con el archivo normal.dot.

Adjunto para ilustración el script que tenemos para el desarrollo de esta
API.

Gracias de antemano

string sDoc
String ls_clipboard
String ls_paste
String ls_copy

oleobject MyOleObject

If dw_1.GetItemString(dw_1.GetRow(),"concepto") = "" then Return

/*place the text in clipboard from current column*/

If Clipboard(dw_1.GetItemString(dw_1.GetRow(),"concepto")) = "" Then RETURN
//OleObject MyOleObject

MyOleObject = CREATE OLEObject

If MyOleObject.ConnectToNewObject("word.application") <> 0 Then Return

myoleobject.Application.Visible = False

myoleobject.Application.WindowState = 2

myoleobject.Application.Documents.Add.Content.Paste

// Selecciona idioma de corrector Ortofráfico

ls_codigo_idioma = dw_1.GetItemString(dw_1.GetRow(),"codigo_idioma")

CHOOSE CASE ls_codigo_idioma
CASE 'ING'
myoleobject.ActiveDocument.AttachedTemplate.LanguageID 1033
myoleobject.Selection.LanguageID = 1033
CASE 'ESP'
myoleobject.ActiveDocument.AttachedTemplate.LanguageID 9226
myoleobject.Selection.LanguageID = 9226

// myoleobject.ActiveDocument.AttachedTemplate.LanguageID 1034
// myoleobject.Selection.LanguageID = 1034
END CHOOSE
// Fin de Selección de Idioma

// Inicio de corrector Ortográfico

myoleobject.ActiveDocument.CheckSpelling

myoleobject.Application.ActiveDocument.Content.Copy

/*re-place the text in current column with text from clipboard */
ls_clipboard = clipboard()

if Clipboard() <> "" then
dw_1.AcceptText()
dw_1.SetItem(dw_1.GetRow(),"concepto",Clipboard())
TriggerEvent("ue_grabar")
end if
/*==*/


myoleobject.ActiveDocument.Close(0)

myoleobject.Application.Quit

MyOleObject.disconnectobject()

//Destroy Shared Variable OleObject
Destroy MyOleObject


//messagebox("Información", "El corrector Ortográfico terminó
satisfactoriamente")
 

Leer las respuestas

#1 Marta PM [MVP Office]
17/05/2005 - 00:26 | Informe spam
Hola:
Primero decirte que yo de programación ni idea pero por intentar ayudar mientras
lleguen mejores ideas que no sea :-)
Prueba a añadir la siguiente línea a tu código:
myoleobject. NormalTemplate.Saved = True

También verifica en Word que en Herramientas / Opciones, pestaña Guardar no tengas
activada la casilla "Preguntar si se guarda la plantilla Normal".
¿Comentas?

Marta PM
Saúdos/Saludos
MVP Office

(Si quieres escribirme ya sabes lo que no quiero)
__________
La información contenida en este mensaje se proporciona "TAL CUAL", sin garantías
explícitas ni implícitas, y no otorga derecho alguno. Usted asume cualquier riesgo al
poner en práctica lo recomendado o sugerido en el presente mensaje.

¿Quieres saber que es un MVP?
http://mvp.support.microsoft.com/

"Alejandro" escribió en el mensaje
news:%
Hola amigos resulta que tengo una aplización desarrollada en Sybase para el
control de tiempos trabajados por algunos tipos de usuario administrativos.
Resulta que nos hemos dado cuenta que con mucha frecuencia los datos
ingresados por los usuarios tienen errores de ortografia y hemos
desarrollado un API que hace el llamado al corrector para que el usuario
tenga desde la apliación la posibilidad de corregir la ortografia.

Resulta que todo funciona bien pero cuando Word no esta abierto. Corrige
perfecto y hace los cambios bien. Cuando tengo algún documento abierto el
sistema me dice que no puede guardar los cambios en la Normal.dot despues de
que corrige la ortografia y me obliga a darle un nuevo nombre al archivo. Yo
pienso que tiene que ver con la modificación de esta plantillla pero no se
como arreglar el problema. Algo de simultaneidad con el archivo normal.dot.

Adjunto para ilustración el script que tenemos para el desarrollo de esta
API.

Gracias de antemano

string sDoc
String ls_clipboard
String ls_paste
String ls_copy

oleobject MyOleObject

If dw_1.GetItemString(dw_1.GetRow(),"concepto") = "" then Return

/*place the text in clipboard from current column*/

If Clipboard(dw_1.GetItemString(dw_1.GetRow(),"concepto")) = "" Then RETURN
//OleObject MyOleObject

MyOleObject = CREATE OLEObject

If MyOleObject.ConnectToNewObject("word.application") <> 0 Then Return

myoleobject.Application.Visible = False

myoleobject.Application.WindowState = 2

myoleobject.Application.Documents.Add.Content.Paste

// Selecciona idioma de corrector Ortofráfico

ls_codigo_idioma = dw_1.GetItemString(dw_1.GetRow(),"codigo_idioma")

CHOOSE CASE ls_codigo_idioma
CASE 'ING'
myoleobject.ActiveDocument.AttachedTemplate.LanguageID > 1033
myoleobject.Selection.LanguageID = 1033
CASE 'ESP'
myoleobject.ActiveDocument.AttachedTemplate.LanguageID > 9226
myoleobject.Selection.LanguageID = 9226

// myoleobject.ActiveDocument.AttachedTemplate.LanguageID > 1034
// myoleobject.Selection.LanguageID = 1034
END CHOOSE
// Fin de Selección de Idioma

// Inicio de corrector Ortográfico

myoleobject.ActiveDocument.CheckSpelling

myoleobject.Application.ActiveDocument.Content.Copy

/*re-place the text in current column with text from clipboard */
ls_clipboard = clipboard()

if Clipboard() <> "" then
dw_1.AcceptText()
dw_1.SetItem(dw_1.GetRow(),"concepto",Clipboard())
TriggerEvent("ue_grabar")
end if
/*==*/


myoleobject.ActiveDocument.Close(0)

myoleobject.Application.Quit

MyOleObject.disconnectobject()

//Destroy Shared Variable OleObject
Destroy MyOleObject


//messagebox("Información", "El corrector Ortográfico terminó
satisfactoriamente")



Preguntas similares