Me gustaría ser capaz de:¿Cómo puedo comparar objetos de interoperabilidad de Word para "igualdad de referencia" Y determinar la colección o el objeto primario al que pertenece, por ejemplo, un párrafo?
- comparar los proxies Palabra de interoperabilidad COM en una base de "igualdad de referencia"; y
- mapa de un objeto específico (por ejemplo un párrafo) a la colección que viene de, o al menos
- determinar si dos párrafos son de la misma sección y que se viene relativamente antes de la anterior
¿Por qué quiero hacer esto? Intento crear un Complemento de Word que actúe de manera similar a un corrector ortográfico en el sentido de que se ejecuta en segundo plano (por antecedentes, quiero decir robando regularmente el tiempo del hilo principal de Word utilizando SendMessage) y escanea el documento para asegurarse texto "tokens". Quiero ser capaz de mantener una colección de tokens y actualizarlos a medida que el documento cambia. Un ejemplo específico de esto es si el usuario edita un párrafo determinado, quiero volver a explorar el párrafo y actualizar mi estructura de datos que apunta a ese párrafo. Si no hay forma de mapear entre el párrafo editado por el usuario (es decir, el párrafo donde comienza el rango de selección) y un párrafo que he "almacenado" en una estructura de datos, no puedo hacer esto.
código de ejemplo para el punto 1, por encima de
Si escribo el siguiente código VBA:
Dim Para1 As Paragraph
Dim Para2a As Paragraph
Dim Para2b As Paragraph
Set Para1 = ActiveDocument.Paragraphs(1)
Set Para2a = Para1.Next
Set Para2b = Para1.Next.Next.Previous
If Para2a Is Para2b Then
Debug.Print ("Para2a Is Para2b")
Else
Debug.Print ("Para2a Is Not Para2b")
End If
Entonces me estoy haciendo la salida:
"Para2a Is Not Para2b"
Que es quizás físicamente verdadero (diferentes proxys COM) pero no lógicamente t ruda. Necesito poder comparar esos párrafos y determinar si son lógicamente el mismo párrafo subyacente.
(Estoy planeando escribir el complemento en C#, pero el código VBA anterior demuestra el tipo de problema que necesito superar antes de hacer demasiada codificación).
Para los elementos 2 y 3 anteriores, es de esperar que sean fáciles de entender. Supongamos que tengo una referencia de párrafo (proxy de interoperabilidad). Quiero averiguar "dónde" está en el documento. ¿Pertenece a la Sección 1? ¿Está en un pie de página? Sin esta capacidad, todo lo que puedo hacer razonablemente para obtener una idea de dónde vienen las cosas es volver a escanear todo el documento cada vez que cambie, lo que por supuesto es absurdamente ineficiente y no será lo suficientemente oportuno para el usuario de la aplicación.
¡Cualquier pensamiento muy apreciado! Me complace publicar información adicional según sea necesario.
Sí, no cuente con recuperar el mismo objeto. Compara sus rangos. –