跳转至内容

应用程序 VBA/生成随机字典词

来自维基教科书,开放的书籍,开放的世界

此 VBA 代码模块仅在 MS Word 中有效。它会生成一个伪随机字典词列表,并在 VBA 编辑器的立即窗口中列出它们。

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

另请参阅

[编辑 | 编辑源代码]
[编辑 | 编辑源代码]
华夏公益教科书