单词宏转到特定的字数统计位置?

问题描述 投票:0回答:2

我正在寻找一个宏解决方案,可以在字数统计中搜索特定单词。假设我的文档已达到第 23,050 个字(我处理的是书本长度的手稿),我希望能够转到该字。正常的转到命令将转到一行或一页,但不会转到单词。有什么想法吗?

vba ms-word word-count
2个回答
1
投票

试试这个:

Option Explicit

Sub GoToWord(lWord As Long)
    ThisDocument.Words(lWord).Select
    Selection.Collapse
End Sub

第一个命令将选择文档中所需的单词,第二个命令将光标置于该单词的开头。请注意,使用的

Words
集合包含标点符号。


0
投票

我有一个例子

子Contar_palabras() ' ' Contar_palabras 宏 ' ' const maxwords = 10000 'Vamos a poner un limite para las palabras a contrar Dim SingleWord As String 'vamos a tener esta 变量 para ir Guardando las palabras Dim Words(maxwords) As String 'Aqui vamos ir almacenando las palabras Dim Freq(maxwords) As Integer 'Aqui vamos almacenar cada cuanto se repiten las palabras Dim WordNum As Integer 'numero para ir contando cada palabra Dim ByFreq As Boolean 'una banderita para ordenar por frecuencia Dim ttlwds As Long 'contador de numerototal de palabras Dim Found As Boolean '临时标志 Dim j, k, l, Temp As Integer 'varibales para navegar entre los Arreglos Dim ans As String 'modo de ordenacmiento si por palabras o si por frecuencia 暗淡二作为字符串

                ' Esta es una pantalla para preguntar como quiere el usuario ordenar las palabras
                ByFreq = True
                ans = InputBox("Como quieres ordener el resultado por  PALAdra o por FRECUENCIA?", "Sort order", "PALAdra")
                If ans = "" Then End
                If UCase(ans) = "PALABRA" Then
                    ByFreq = False
                End If
                
                Selection.HomeKey Unit:=wdStory
                System.Cursor = wdCursorWait
                WordNum = 0
                ttlwds = ActiveDocument.Words.Count

                
                For Each aword In ActiveDocument.Words
                    SingleWord = Trim(LCase(aword))
                    'Out of range?
                    If SingleWord < "a" Or SingleWord > "z" Then
                        SingleWord = ""
                    End If
                    
                    If Len(SingleWord) > 0 Then
                        Found = False
                        For j = 1 To WordNum
                            If Words(j) = SingleWord Then
                                Freq(j) = Freq(j) + 1
                                Found = True
                                Exit For
                            End If
                        Next j
                        If Not Found Then
                            WordNum = WordNum + 1
                            Words(WordNum) = SingleWord
                            Freq(WordNum) = 1
                        End If
                        If WordNum > maxwords - 1 Then
                            j = MsgBox("Lo maximo permitido son 9000", vbOKOnly)
                            Exit For
                        End If
                    End If
                    ttlwds = ttlwds - 1
                    StatusBar = "Remaining: " & ttlwds & ", Unique: " & WordNum
                Next aword

                ' Ahora si a ordenar los datos
               For j = 1 To WordNum - 1
                    k = j
                    For l = j + 1 To WordNum
                        If (Not ByFreq And Words(l) < Words(k)) _
                          Or (ByFreq And Freq(l) > Freq(k)) Then k = l
                    Next l
                    If k <> j Then
                        tword = Words(j)
                        Words(j) = Words(k)
                        Words(k) = tword
                        Temp = Freq(j)
                        Freq(j) = Freq(k)
                        Freq(k) = Temp
                    End If
                    StatusBar = "Ordenando: " & WordNum - j
                Next j


            
         
                    

结束子

并用西班牙语解释 https://www.programacionparatodos.com/2024/05/macro-en-word-para-contar-palabras.html

© www.soinside.com 2019 - 2024. All rights reserved.