Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Office (Word, Excel, Outlook и т.д.) (http://forum.oszone.net/forumdisplay.php?f=115)
-   -   [решено] помогите упорядочить массив слов (http://forum.oszone.net/showthread.php?t=261208)

kontox 25-05-2013 12:41 2155991

помогите упорядочить массив слов
 
Помогите, пожалуйста,как сделать, чтобы например из книги в док формате из всего массива текста взять случайным образом какие то слова и их выставить в столбец, страниц на 10.
примерно, чтобы это так выглядело
слово1
слово2
...
слово(n)

и такой столбик на 10 страниц. Единственное, чтобы слова не повторялись и выстраивались по алфавиту;)

Iska 25-05-2013 17:02 2156104

1. Зачем?
2. Выкладывайте:
Цитата:

Цитата kontox
книги в док формате »


kontox 25-05-2013 17:18 2156117

нечто вроде небольшого словаря составлю. это к занятиям.
вот сама книжка
http://rghost.ru/46249871
просто так она не прикреплялась, много весит)) 14 мегов

Iska 25-05-2013 22:45 2156272

Цитата:

Цитата kontox
много весит)) 14 мегов »

Не пробовали воспользоваться архиватором? Есть бесплатные.

читать дальше »
Выкладывать rtf под видом doc — моветон.

Выбор документа крайне неудачен. Из-за того, что весь (!) текст содержится во фреймах, обработка идёт дико медленно. В тексте содержится немало латинской речи и нумерации, ссылок, что не способствует составлению словаря.


Откройте Ваш rtf-файл «The Psychophysiology of Sex.doc» и сохраните его как нормальный «Документ Word (*.doc)», например, под именем «The Psychophysiology of Sex 2.doc». Укажите путь к сохранённому «The Psychophysiology of Sex 2.doc» в строке:
Код:

Set objDocument = objWord.Documents.Open("E:\Песочница\0260\The Psychophysiology of Sex 2.doc")
Укажите примерное число слов в строке:
Код:

If iCount >= 1000 Then
(1000 слов мне хватило примерно на 20 страниц).

читать дальше »
Код:

Option Explicit

Const adVarChar = 200
Const adFldKeyColumn = 32768
Const adFilterNone = 0

Dim objWord
Dim objDocument
Dim objRange

Dim objRegExp
Dim objRecordset

Dim lngWords
Dim strWord
Dim iCount


Set objWord      = WScript.CreateObject("Word.Application")
Set objRegExp    = WScript.CreateObject("VBScript.RegExp")

objRegExp.Pattern = "^[A-Za-z]{2,}$"

With WScript.CreateObject("ADODB.Recordset")
        .Fields.Append "Word", adVarChar, 2^8 - 1, adFldKeyColumn
       
        .Open
        .Fields.Item("Word").Properties("Optimize") = True
        .Sort = "Word ASC"
       
        Set objDocument = objWord.Documents.Open("E:\Песочница\0260\The Psychophysiology of Sex 2.doc")
       
        lngWords = objDocument.Words.Count
       
        For Each objRange In objDocument.Words
                strWord = LCase(objRange.Text)
               
                If objRegExp.Test(strWord) Then
                        .Filter = "Word = '" & strWord & "'"
                       
                        If .RecordCount = 0 Then
                                .AddNew Array("Word"), Array(strWord)
                               
                                iCount = iCount + 1
                               
                                WScript.Echo "[" & CStr(iCount) & "] of [" & CStr(lngWords) & "]: " & strWord
                               
                                If iCount >= 1000 Then
                                        Exit For
                                End If
                        End If
                End If
        Next
       
        objDocument.Close
        Set objDocument = Nothing
       
        .Filter = adFilterNone
        .MoveFirst
       
        Set objDocument = objWord.Documents.Add()
       
        Do Until .EOF
                objDocument.Paragraphs.Last.Range.InsertAfter .Fields.Item("Word").Value & Chr(13)
                .MoveNext
        Loop
       
        Set objDocument = Nothing
       
        .Close
End With

objWord.Visible = True

WScript.Quit 0


Вызов скрипта из-под командной строки:
Код:

cscript.exe //nologo "Путь к скрипту\Скрипт.vbs"

Iska 25-05-2013 23:01 2156281

Так… Для полного счастья — там ещё и переносы слов некорректно распознаны, так что будьте готовы, например, к тому, что «atten» и «tion» — это два слова.

kontox 26-05-2013 00:29 2156322

Iska, благодарствую добрый человек:))


Время: 19:55.

Время: 19:55.
© OSzone.net 2001-