Domanda

Ho un documento di grandi dimensioni con campioni di codice in. Voglio conoscere il conteggio delle parole per tutto il testo in font calibri (corpo), indipendentemente dalle dimensioni.Voglio ignorare consola, ecc.

Ho una macro che conta in corsivo (pubblicato come esempio) ma non riesce a farlo funzionare.

Sub IgnoreItalics()
    Dim lngWord As Long, lngCountIt As Long

    lngCountIt = 0

    For lngWord = 1 To ActiveDocument.Words.Count
        If ActiveDocument.Words(lngWord).Italic Then
            lngCountIt = lngCountIt + 1
        End If
    Next lngWord

    MsgBox "Number of non-italic words: " & _
    ActiveDocument.BuiltInDocumentProperties("Number of words") -
    lngCountIt
End Sub
.

Qualche idea come cambiarlo in Consolas?

È stato utile?

Soluzione

Modifica del tuo codice in modo da sperma di capirlo, ecco una soluzione che funziona per me

Sub CountTypeface()
    Dim lngWord As Long
    Dim lngCountIt As Long
    Const Typeface As String = "Calibri"

    For lngWord = 1 To ActiveDocument.Words.Count
        'Ignore any document "Words" that aren't real words (CR, LF etc)
        If Len(Trim(ActiveDocument.Words(lngWord))) > 1 Then
            If ActiveDocument.Words(lngWord).Font.Name = Typeface Then
                lngCountIt = lngCountIt + 1
            End If
        End If
    Next lngWord

    MsgBox "Number of " & Typeface & " words: " & lngCountIt
End Sub
.

Altri suggerimenti

Per il record, cambia il tuo codice solo a tad ha funzionato per me:

Sub CountFonts()

Dim lngWord As Long, lngCountIt As Long
lngCountIt = 0
For lngWord = 1 To ActiveDocument.Words.Count
If ActiveDocument.Words(lngWord).Font.Name = "Calibri" Then
lngCountIt = lngCountIt + 1
End If
Next lngWord

MsgBox "Number of non-Calibri words: " & _
ActiveDocument.BuiltInDocumentProperties("Number of words") - lngCountIt
End Sub
.

Usa

ActiveDocument.ComputeStatistics(wdStatisticWords)
.

o

ActiveDocument.ComputeStatistics(0)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top