2009-11-24 11 views
5

Supponiamo di avere un riferimento Range in Word VBA e voglio suddividerlo in intervalli più piccoli in cui la formattazione (font, colore, ecc.) È identica. Ad esempio, se mi metto con:MS Word VBA - Determina l'estensione di "style run"?

Il rapido marrone volpe saltato il pigro cane .

... poi vorrei tornare 5 gamme, come segue:

Il

rapido

marrone volpe saltato il

pigro

cane.

Speravo che ci fosse un modo integrato per farlo in VBA (e persino avere una memoria fantasma di usare una tale funzione), ma non riesco a trovare nulla.

Potrei fare quello che devo fare nel codice, ma qualcosa che funziona in modo nativo sarebbe molto (molto) più veloce.

[Nel codice, vorrei usare il fatto che - ad esempio - oRange.Font.Bold restituirà "indefinito" se l'intervallo contiene un mix di grassetto e non grassetto, e quindi potrei usarlo ripetutamente per scoprire l'estensione dell'uniforme gamme. Ma sono abbastanza sicuro che la Parola farà questo sotto il cofano, quindi se qualcuno può apparire che il cappuccio per me, sarei grato]

EDIT:. Rimosso altro esempio complessa che il renderer StackOverflow HTML non piace.

risposta

5

Impossibile farlo in VBA poiché OM non supporta le esecuzioni (OOXML tuttavia). Il meglio che potresti fare è ottenere le wdUnits di wdCharacterFormatting e creare un ciclo per creare intervalli, estrarne le proprietà e poi distruggerle fino al termine del ciclo. Faresti probaby iniziare con qualcosa di simile:

Dim sel As Selection 
Set sel = ActiveWindow.Selection 
Dim selRange As Range 
Set selRange = selRange.Next(wdCharacterFormatting) 

per ottenere l'inizio e la fine della prossima serie di formattazione, come selRange.Start/selRange.End, nonché degli eventuali immobili come selRange.Font.Name/ selRange.Bold.

+0

Perfetto, era esattamente quello che stavo cercando. Sapevo di aver visto qualcosa del genere da qualche parte. Grazie! –

+0

Almeno in Word 2013, questo finisce per abbinare le modifiche ai paragrafi che non cambiano effettivamente la formattazione dei caratteri. Ho finito per analizzare il codice XML di Word per cercare le proprietà di esecuzione e paragrafo ('' e ''), che ha risposto alla mia domanda di "questo documento ha qualche stile applicato ad esso?" –