Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Word
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2012, 14:35   #11
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Код:
Код конечно сыроват, но для макета годится
Sub aword120314_0935()
Dim s1, s2, j1, J1A, j2, J2A, dt
Dim SS, SS1A, SS2A
Dim jcycl As Long
Dim dt1
Dim zkol As t_kol1
Dim kol00 As Collection
Dim XM1(32000, 2) As String
j1 = Word.ActiveDocument.Words.Count
dt1 = Now
Debug.Print j1, Len(Word.ActiveDocument.Content.Text)
dt = Timer
'Dim XM(32000) As String
SS = ""
 Word.ActiveDocument.Select
Debug.Print Selection.Information(wdNumberOfPagesInDocument)
Dim OBJLINES
Dim PAGE1 As Page, JP
Dim LINE1 As Line
Dim PANE1 As Pane
Set OBJLINES = ActiveDocument.ActiveWindow.Panes(1).Pages(1).Rectangles(1).Lines(1)
Debug.Print "=="; OBJLINES.Range.Text
Do While jcycl < 1
JP = 0

For Each PAGE1 In ActiveDocument.ActiveWindow.Panes(1).Pages
JP = JP + 1
PAGE1.Rectangles(1).Range.Select
J1A = Selection.Words.Count
j1 = 0
Do While j1 < J1A
j1 = j1 + 1
s2 = Selection.Words(j1)
j2 = Len(s2)
'Exit Do
'Debug.Print s2; " "; Len(SS)
If JP > 1 And Len(s2) > 12 Then
JP = JP + 0
End If
If j2 > 2 And InStr("QWERTYUIOPASDFGHJKLZXCVBNMЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ", Mid(s2, 1, 1)) > 0 Then
'Debug.Print s2; " "; Len(SS);
j3 = InStr(SS, "`" & Trim(s2) & "`")
If j3 = 0 Then
SS = SS & "`" & Trim(s2) & "`"
Debug.Print s2; " "; Len(SS); JP; "="; DateDiff("s", Now, dt1)
If Len(SS) > 32000 Then
MsgBox "размер 32000 превышен ....нужна доработка макроса ...выхожу из WORD"
Word.Application.Quit True
Exit Sub
j3 = 0
End If

End If
j3 = InStr(SS, "`" & Trim(s2) & "`")
XM1(j3, 1) = Trim(s2)
SS1A = XM1(j3, 2)
'SS2A = " " & Trim(JP & "/") & Trim(jcycl) & " "
SS2A = " " & Trim(JP) & " "


If InStr(SS1A, SS2A) = 0 Then
XM1(j3, 2) = SS1A & SS2A
End If
'XM1(j3, 2) = XM1(j3, 2) & JP & "/" & j1 & ","
End If
'j1 = j1 - 1
Loop
Next PAGE1
Debug.Print jcycl, DateDiff("s", Now, dt1)
jcycl = jcycl + 1
Loop

j1 = 0
SS = ""
Do While j1 < 32000
j1 = j1 + 1
If Len(XM1(j1, 1)) > 0 Then
'Debug.Print j1, XM1(j1, 1), XM1(j1, 2)
SS1A = Trim(XM1(j1, 1)) & Chr(9)
SS = SS & Replace(SS1A & XM1(j1, 2), "  ", ", ") & Chr(13) & Chr(10)
End If
Loop
Word.Documents.Add
Selection.Range.Text = SS
Debug.Print dt - Timer
End Sub
хотела попробовать на чужом файле(справка по PureBasic) --не сработал
------------------------какие-то глюки-----------------------------------
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание

Последний раз редактировалось shanemac51; 14.03.2012 в 14:39.
shanemac51 вне форума Ответить с цитированием
Старый 14.03.2012, 14:42   #12
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

спасибо за труды, буду дерзать
надеюсь, символов окажется не слишком много (хотя сама книжка - около 2 млн. знаков).
может, разбить ее на части, если что?

доп. файлик сам причешу, как сумею.
ежели, конечно, сработает

Последний раз редактировалось caute; 14.03.2012 в 14:45.
caute вне форума Ответить с цитированием
Старый 14.03.2012, 14:52   #13
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

я так и не поняла --какие слова вас интересуют

-фамилии-наименования
-или любое с заглавной буквы
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 14.03.2012, 15:07   #14
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

интересуют, конечно, фамилии (как русские, так и латиницей), но, по моему скромному разумению, фамилии от нефамилий можно отделить только вручную.
ну разве можно отделить макросом, например, "Коробочку" передач от старушки "Коробочки" из поэмы?
caute вне форума Ответить с цитированием
Старый 14.03.2012, 15:34   #15
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

причем только из контекста
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 14.03.2012, 18:10   #16
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию не пашет, даже не стартует :(

Dim zkol As t_kol1

caute вне форума Ответить с цитированием
Старый 14.03.2012, 19:59   #17
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

переведи строку в комментарий
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 14.03.2012, 20:56   #18
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

о! на пробном мелком файлике макрос сработал на ура
щас скормлю ему монстра

через 4 минуты работы выдал "размер превышен"
придется делить файл на куски...

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

зы. вылетает он после обработки примерно 10 тыс. заглавных букв

Последний раз редактировалось caute; 14.03.2012 в 23:44.
caute вне форума Ответить с цитированием
Старый 15.03.2012, 00:13   #19
shanemac51
Участник клуба
 
Аватар для shanemac51
 
Регистрация: 12.08.2010
Сообщений: 1,077
По умолчанию

Цитата:
выстроить номера страниц по порядку в пределах каждого абзаца
не поняла, что требуется
Имя-Галина== почта shanemac51@yandex.ru скайп shanemac51 c 8-15мск будни
Сфера интересов--word-excel-access-распознавание
shanemac51 вне форума Ответить с цитированием
Старый 15.03.2012, 00:28   #20
caute
Форумчанин
 
Регистрация: 27.10.2009
Сообщений: 277
По умолчанию

допустим в списке дано:
Эйнштейн 100, 301
Эйнштейна 41, 252, 663
Эйнштейне 375

двух последних эйнштейнов убираю руками, цифры слепляю воедино, получается:
Эйнштейн 100, 301, 41, 252, 663, 375

но цифры-то не по порядку идут, а должны по порядку - так:
Эйнштейн 41, 100, 252, 301, 375, 663
caute вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
В чем отличия указателя self от this? romantik2011 PHP 3 31.07.2011 00:57
Копирование указателя С++ Alex1991 Помощь студентам 2 24.04.2011 04:00
Массив с использование указателя Seferus Общие вопросы C/C++ 1 02.11.2010 19:54
Проверить действительность указателя Altera Общие вопросы Delphi 2 19.01.2010 12:41
передача указателя в функцию arturka Помощь студентам 3 06.07.2008 00:25