visual studio 2010 - visual - Crear instancia de palabra exclusiva
visual studio tools for office 2016 download (2)
Estoy creando una instancia de palabra (14) con interoperabilidad de la aplicación de formas de seguridad # .net4 para trabajar con un documento. Si algún documento de Word se abre más allá de mi aplicación, se usará la misma instancia de palabra y esto perturbará mi aplicación.
Pregunta simple : ¿Hay alguna forma de configurar la instancia de mi palabra exclusiva para mi aplicación?
Gracias por adelantado.
Btw: Encontré algunas cosas con exclusivo / word / office / isolated / block / instance pero ninguna respuesta de todos modos.
No, no hay forma de que bloquee una instancia de Word solo para usted.
Pero, según su comentario, es fácil evitar el problema: no use ActiveDocument
. Puede moverse usando ActiveDocument
llamando al documento algo específico y luego usando esa variable (ya sea que esté abriendo un documento existente o creando uno nuevo).
Por ejemplo:
Sub NewDoc()
Dim d As Document
Set d = Documents.Add(Visible:=False)
End Sub
Sub ExistingDoc()
Dim d As Document
Set d = Documents.Open(FileName:="C:/myexisting.doc")
End Sub
En los dos casos anteriores, simplemente usaría d
en lugar de donde solía usar ActiveDocument
.
Hay una especie de solución, pero no es bonita. El problema principal es que Word se registra en el ROT (Running Object Table) y otras aplicaciones pueden acceder fácilmente a la instancia de Word registrada en el ROT (eso es lo que hace la función GetObject de VB, por ejemplo).
Entonces, en tu aplicación, básicamente tienes que hacer 2 cosas
- Intente GetObject (es decir, consulte el ROT para una instancia en ejecución)
- Si obtienes uno, sabes que TIENES que crear una nueva instancia de Word para usar ( CreateObject en VB, el proceso es diferente en otros idiomas).
- Si NO obtiene uno, debe crear 2 nuevas instancias de Word. El primero se registrará automáticamente en el ROT, el segundo no. Usa la segunda instancia y bastante la primera instancia.
Aunque finalice esa primera instancia, no se registrará "retroactivamente" en el ROT, y otras aplicaciones generalmente no objetarán una referencia a su uso, sino que crearán automáticamente una nueva instancia, que, como ninguna otra instancia ya está registrado en el ROT, luego se registrará.
Dicho esto, todavía es posible que otras aplicaciones lleguen a tu instancia de Word, por lo que esta técnica no es a prueba de balas. ¿Cómo? Porque Word TAMBIÉN registra cada DOCUMENTO cargado en el ROT. Pero esa es una característica que rara vez se usa.