BlueDragonFire Ответов: 1

Чтение из текстового файла, выбор случайного слова


Я хочу использовать VBA {Word 2003} для чтения TXT-файла {список слов} в список переменных, а затем выбрать слово из этого списка с помощью RND(). Я попробовал несколько кодов, которые нашел через Google, хотя большинство из них были для более поздних версий Word VBA, но ничего не сработало, и Office 2003-последняя версия, которая мне нравится.

Я бы иногда менял TXT-файл, так что коду нужно было бы "увидеть", сколько слов {одно слово в строке} находится в файле, а затем выполнить RND() на основе этого числа после помещения слов {обычно это будет от 50 до 500 слов} в список переменных.

Я просто не знаю, куда идти дальше, и был бы признателен за любую помощь.

Мир вам и вашим близким,
Мэтью" Дра'Гон " Стохлер

Что я уже пробовал:

Различные коды я нашел через Google.

1 Ответов

Рейтинг:
4

Maciej Los

Это довольно просто. Пожалуйста, следуйте комментарию в приведенном ниже коде:

Option Explicit

Sub Test()

'display message with random word
MsgBox GetRandomWordFromFile("D:\words.txt")

End Sub


Function GetRandomWordFromFile(ByVal sFileName As String) As String
    Dim sLine As String
    Dim iFile As Integer, iLine As Integer
    Dim words() As String 'array of words/string
    
    'variable to store no. of words
    iLine = 0
    'number of file
    iFile = FreeFile()
    Open sFileName For Input As #iFile
    Do Until EOF(iFile)
        'read line into variable
        Line Input #iFile, sLine
        'increase the size of array
        ReDim Preserve words(iLine)
        'word -> array
        words(iLine) = sLine
        'increase line no.
        iLine = iLine + 1
    Loop
    Close #iFile

    'count of words / lines
    iFile = UBound(words())
    
    'get random no.
    'Int((upperbound - lowerbound + 1) * Rnd + lowerbound)
    iLine = Int((iFile - 1 + 1) * Rnd + 1)
    
    'return random word
    GetRandomWordFromFile = words(iLine)

End Function


Удачи вам!


BlueDragonFire

Прекрасно работает! Большое спасибо!

Maciej Los

Всегда пожалуйста.
Овации,
Мацей

BlueDragonFire

О, и просто к твоему сведению. Причина, по которой я делаю это, - это своего рода инструмент, помогающий мне писать. Что-то, что, как я полагаю, даст моему разуму своего рода "толчок", когда я застряну.

Maciej Los

ОК. Удачи вам!