Macro para contar caracteres en Word
Hace unas semanas mi padre me pidió que le ayudase con un libro de relatos que estaba preparando para enviar a un concurso. Las bases del concurso pedían un mínimo de 100 páginas y de 1000 caracteres por página. El libro que habia preparado tenía alrededor de 110000 caracteres para un total de 104 páginas, por lo que en principio parecía cumplir con las bases del concurso. El caso es que debido a la forma que tiene Word de separar los párrafos entre páginas, había páginas con menos de 1000 caracteres.
Para asegurarse de no incumplir las bases me pidio que ajustase los márgenes del documento para hacer que todas las páginas tuvisen 1000 caracteres, al menos. Cada vez que hacía alguna modificación en los márgenes del documento tenía que volver a revisar todas las páginas del documento para contar el número de caracteres. Como el tema se complicó más de lo que yo pensaba, se me ocurrió hacer una macro que me llevase a la primera página que incumpliese la condición. La dejo a continuación por si a alguien le sirve de ayuda.
Dim pagenum As Long Dim min As Long Dim pageMin As Long Dim charCountWithoutSpaces As Integer Application.ScreenUpdating = False TtlPgs = Selection.Information(wdNumberOfPagesInDocument) 'MsgBox "Paginas: " & TtlPgs For S = 1 To TtlPgs - 1 Selection.HomeKey wdStory Selection.GoTo What:=wdGoToPage, Count:=S Selection.Bookmarks("\page").Range.Select charCountWithoutSpaces = Selection.Range.ComputeStatistics(wdStatisticCharacters) If charCountWithoutSpaces < 1000 Then min = charCountWithoutSpaces pageMin = S Exit For End If Next Application.ScreenUpdating = True MsgBox "Pagina " & pageMin & " (" & min & " caracteres)" Selection.HomeKey wdStory Selection.GoTo What:=wdGoToPage, Count:=pageMin Selection.Bookmarks("\page").Range.Select
En la línea 8 se obtiene el número de páginas del documento. Para cada una de ellas se selecciona su contenido (línea 14) y se obtiene el número de caracteres que la compone (línea 16), sin tener en cuenta los espacios. Se comprueba si es la página de menos caracteres que se han visitado hasta ahora y, al acabar, se lleva el cursor hasta la página con menos cantidad de caracteres (línea 29).
- Inicie sesión para comentar