Vorrei essere in grado di:Come posso confrontare gli oggetti di Word Interop per "l'uguaglianza di riferimento" E determinare la raccolta o l'oggetto genitore a cui, ad esempio, appartiene un paragrafo?
- confrontare i proxy Word interoperabilità COM su una base "uguaglianza di riferimento"; e
- mappa da un oggetto specifico (ad esempio un paragrafo) alla raccolta proviene, o almeno
- determinare se due paragrafi provengono dalla stessa sezione e quale viene relativamente prima del precedente
Perché voglio farlo? Sto cercando di creare un componente aggiuntivo di Word che funzioni in modo simile a un correttore ortografico nel senso che viene eseguito in background (per sfondo intendo rubando regolarmente il tempo dal thread Word principale utilizzando SendMessage) e analizza il documento per alcuni testo "token". Voglio essere in grado di mantenere una collezione di token e aggiornarli mentre il documento cambia. Un esempio specifico di questo è se l'utente modifica un determinato paragrafo, voglio riesaminare il paragrafo e aggiornare la mia struttura dati che punta a quel paragrafo. Se non c'è modo di mappare tra il paragrafo modificato dall'utente (cioè il paragrafo in cui inizia l'intervallo di selezione) e un paragrafo che ho "memorizzato" in una struttura dati, non posso farlo.
Esempio di codice per la voce # 1, sopra
Se scrivo il seguente codice 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
Poi sto ottenendo l'output:
"Para2a Is Not Para2b"
Che è forse fisicamente vero (diversi proxy COM) ma non logicamente t rue. Devo essere in grado di confrontare quei paragrafi e determinare se sono logicamente lo stesso paragrafo sottostante.
(Sto pianificando di scrivere il componente aggiuntivo in C#, ma il codice VBA sopra riportato dimostra il tipo di problema che ho bisogno di superare prima di fare troppa codifica).
Per gli articoli 2 e 3 sopra, si spera che siano auto-esplicativi. Supponiamo che abbia un riferimento di paragrafo (proxy interopiano). Voglio capire "dove" è nel documento. Appartiene alla Sezione 1? È in un footer? Senza questa capacità, tutto ciò che posso ragionevolmente fare per ottenere un'idea di dove le cose provengono è riesaminare l'intero documento ogni volta che cambia, il che è ovviamente assurdamente inefficiente e non sarà abbastanza tempestivo per l'utente dell'app.
Ogni pensiero è molto apprezzato! Sono felice di pubblicare ulteriori informazioni, se necessario.
Sì, non contare sul recupero dello stesso oggetto. Confronta i loro range. –