应用程序 VBA/生成随机字典词
外观
< 应用程序 VBA
此 VBA 代码模块仅在 MS Word 中有效。它会生成一个伪随机字典词列表,并在 VBA 编辑器的立即窗口中列出它们。
- 将代码清单复制到 MS Word 中的标准 VBA 模块中,并将文件保存为 docm 类型。在顶部的部分设置用户选项,并运行该过程以生成列表。
- 变量 Num 设置输出词的数量,变量 TypoLen 应设置为所需词的近似长度。
- MS Word 中没有名为 Dictionary 的现成英语词语集合;此术语用于指代用户创建的词语列表集。要访问英语词语列表,需要使用间接方法。首先生成一个与 TypoLen 长度相同的随机词。然后拼写检查器无法识别该词,因此会生成建议,这次作为正确的集合。假设拼写检查集合中至少有一个这样的建议,则从其中随机选择一个用于输出列表。循环持续到生成选定的词语数量为止。
Sub GetNRandomWords()
'Prints N randomly selected words
'in the Immediate Window
'Works in MS WORD only
Dim Sugg As SpellingSuggestions
Dim TypoLen As Long, n As Long
Dim sMakeWord As String, nR As Long
Dim Num As Long, p As Long
'set user options
TypoLen = 7 'trial text length
Num = 10 'number of samples
Randomize
Do
p = p + 1
Do
DoEvents
sMakeWord = ""
'make a misspelled word of length TypoLen
For n = 1 To TypoLen
'concatenate random charas
sMakeWord = sMakeWord & Chr(Int(26 * Rnd + Asc("a")))
Next n
'get resulting spelling suggestions collection
Set Sugg = GetSpellingSuggestions(sMakeWord)
'random select a suggestion
If Sugg.Count >= 1 Then 'assuming there is at least one
'random select one suggestion
nR = Int((Sugg.Count - 1 + 1) * Rnd + 1)
Debug.Print Sugg(nR) 'OUTPUT
'MsgBox Sugg(nR)
End If
Loop Until Sugg.Count >= 1
Loop Until p >= Num
End Sub