Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Visual Basic for Applications/Generate Random Dictionary Words

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Summary This VBA code module works only in MS Word. It generates a pseudo random list of dictionary words, listing them in the immediate window of the VBA editor. The VBA Code Copy the code listing into a standard VBA module in MS Word and save the file as a docm type. Set the user options in the top section and run the procedure to produce the list. The variable Num sets the number of words as output, and the variable TypoLen should be set to the approximate length of the sought-after words. There is no ready-made collection of English words called a Dictionary in MS Word; the term is used for sets of user-constructed word lists. To access a list of English words, an indirect method needs to be used. A random word is first generated equal in length to TypoLen. The spell checker then fails to recognize the word so generates suggestions, this time as a proper collection. Provided that there is at least one such suggestion in the spell check collection, a random choice is made from among them for the output list. The loop continues until the chosen number of words has been produced. The Code Module 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 See Also External Links