Añadir comentario

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).

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de las páginas web y las de correo se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.
CAPTCHA
Esta pregunta es para comprobar si eres una persona y prevenir el envío automático de publicidad.
in_raestructura: