Hakan necesita una macro que cuente los caracteres (sin espacios) en un documento de Word y resalte cada milésima letra. Crear una macro de este tipo es bastante sencillo: simplemente debe examinar todos los caracteres de un documento, a su vez, y solo contar los que no son espacios. La siguiente es una pequeña macro sencilla que hará precisamente eso:

Sub CountThousands1()

Dim J As Long     Dim X As Integer

X = 0     With ActiveDocument         For J = 1 To .Characters.Count             If .Characters(J) <> " " Then X = X + 1             If X = 1000 Then                 .Characters(J).Select                 Selection.Range.HighlightColorIndex = wdYellow                 X = 0                 Beep             End If         Next J     End With End Sub

La macro es bastante simple; examina la colección de Personajes, que contiene todos los caracteres individuales de un documento. El problema con la macro es que es lenta, muy lenta. Word no es muy eficaz para examinar caracteres individuales de esta manera. (Parece que cada vez que hace referencia a un miembro de la colección de Personajes, Word necesita examinar todos los caracteres desde el principio del documento, de nuevo).

Un enfoque diferente es simplemente recorrer el documento, expandiendo una selección hasta llegar a 1,000 caracteres sin espacio.

Sub CountThousands2()

Dim X As Integer     Dim sRaw As String     Dim sProc As String

Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     While Len(Selection) = 1000         sRaw = Selection         sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

While X > 0             Selection.MoveRight Unit:=wdCharacter, Count:=X, Extend:=wdExtend             sRaw = Selection             sProc = Replace(sRaw, " ", "")

X = 1000 - Len(sProc)

Wend         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend         Selection.Range.HighlightColorIndex = wdYellow         Selection.Collapse Direction:=wdCollapseEnd         Selection.MoveRight Unit:=wdCharacter, Count:=1000, Extend:=wdExtend     Wend End Sub

Inicie esta macro con el punto de inserción al principio del documento. Luego, la macro toma mil caracteres, asigna esa selección a una variable (sRaw), crea una variable que tiene todos los espacios eliminados (sProc) y luego calcula la longitud de sProc. Si es inferior a 1000, la selección se amplía por muchos caracteres que sea breve y se repite el proceso. Cuando la selección contiene 1000 caracteres que no son espacios, se establece el resaltado y la macro pasa al siguiente bloque de caracteres.

_Nota: _

Si desea saber cómo usar las macros descritas en esta página (o en cualquier otra página de los sitios WordTips), he preparado una página especial que incluye información útil.

link: / wordribbon-WordTipsMacros [Haga clic aquí para abrir esa página especial en una nueva pestaña del navegador].

WordTips es su fuente de formación rentable en Microsoft Word.

(Microsoft Word es el software de procesamiento de texto más popular del mundo). Este consejo (7870) se aplica a Microsoft Word 97, 2000, 2002 y 2003. Puede encontrar una versión de este consejo para la interfaz de cinta de Word (Word 2007 y más tarde) aquí:

link: / wordribbon-Highlighting_Every_Thousandth_Character [Destacando cada milésimo carácter].