我正在寻找一个宏解决方案,可以在字数统计中搜索特定单词。假设我的文档已达到第 23,050 个字(我处理的是书本长度的手稿),我希望能够转到该字。正常的转到命令将转到一行或一页,但不会转到单词。有什么想法吗?
试试这个:
Option Explicit
Sub GoToWord(lWord As Long)
ThisDocument.Words(lWord).Select
Selection.Collapse
End Sub
第一个命令将选择文档中所需的单词,第二个命令将光标置于该单词的开头。请注意,使用的
Words
集合包含标点符号。
我有一个例子
子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