Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает / 4 сообщений из 4, страница 1 из 1
26.12.2013, 16:46
    #38513387
Акинорев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает
Есть 2 текстовых файла: сноска_16_старт.rtf и сноска_16_финиш.rtf
Макрос в VB под Word (я работаю в старом - Word97) начинает работу из файла финиш. Если находит нужную строку в файле старт, выделяет и копирует все, что заключено в <li>...</li>, и вставляет в файл финиш.
Затык в том, что

Код: vbnet
1.
2.
3.
4.
       With Selection.Find
        .Text = Stroka
        .MatchWildcards = False
       End With



не воспринимает очень длинную строку.

Вот весь код моего макроса (сорри, не большой спец... написала, как смогла...):

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
Sub Макрос_основной()

' Макрос основной Макрос для электронного журнала
' Макрос записан 21.12.13 - Сравнивает сноски окончательного варианта со сносками первоначального варианта

' Работу начинаем из файла_финиш. Макрос работает с 2-мя файлама: финиш и старт
'
    
    Dim iNext As Integer ' счетчик количества сносок
    Dim finishfile As String ' файл _финиш (в нем окончательный вариант сносок)
    Dim startfile As String ' файл старт (в нем предварительный вариант сносок и сами ссылки в тегах)
    Dim bukva As Integer ' кол-во букв в названии файла (вместе с расширением)
    Dim bukva2 As Integer
    Dim Stroka As String ' Строка с текстом сноски
    Dim Url_stroka As String ' Строка с адресом <li> ... </li> в файле_старт
    Dim Url_text As String ' все сноски из файла_старт
    Dim i As Integer ' Счетчик
    
    bukva = 0
    bukva2 = 0
    finishfile = ""
    startfile = ""
    Stroka = ""
    Url_stroka = ""
    Url_text = ""
    i = 1
    
    
    With ActiveDocument.Range
         MatchWildcards = False
      iNext = 0
         .Find.Execute "^#) "
      Do While .Find.Found ' поиск
         iNext = iNext + 1   ' увеличение счётчика
         .Find.Execute "^#) " ' продолжаем поиск
      Loop
    End With
    
    
    finishfile = ActiveDocument.Name ' начинаем работу в окне файла _финиш
    Windows(finishfile).Activate
    
    
    bukva = Len(finishfile) ' Вычисляем длину в символах названия файла_финиш
    bukva2 = bukva - 10
    startfile = Left(finishfile, bukva2) & "_старт.rtf" ' узнаем имя файла _старт, чтобы потом перейти в окно с этим файлом
    
    Selection.HomeKey Unit:=wdStory ' Перейти в начало документа
    Selection.Find.ClearFormatting
    
    For i = 1 To iNext
    
    With Selection.Find
    .Text = "^#) "    ' Найти текст сноски по номеру в файле_финиш
    .MatchWildcards = False
    End With
    
    Selection.Find.Execute
    Selection.MoveRight Unit:=wdCharacter, Count:=1
    Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
    Selection.MoveLeft Unit:=wdCharacter, Count:=1, Extend:=wdExtend
    Selection.Copy
    Stroka = Selection
    
    Windows(startfile).Activate ' Переходим в окно с файлом_старт
    
    Selection.HomeKey Unit:=wdStory
    Selection.Find.ClearFormatting
    With Selection.Find
    .Text = "1) "
    .MatchWildcards = False
    End With
    Selection.Find.Execute
    Selection.EndKey Unit:=wdStory, Extend:=wdExtend
    Selection.Copy
    Url_text = Selection
    
    If InStr(Url_text, Stroka) <> 0 Then
       ' Если сноска из файла_финиш нашлась в файле_старт
    
       Selection.HomeKey Unit:=wdStory ' Перейти в начало документа
       Selection.Find.ClearFormatting
      
       ' Help!
       ' чем бы заменить??? чтоб и длинные строки искала 
       With Selection.Find
        .Text = Stroka
        .MatchWildcards = False
       End With
       '
       '
        
       Selection.Find.Execute
       Selection.MoveDown Unit:=wdLine, Count:=1
    
       With Selection.Find
       .Text = "<li>"
       .MatchWildcards = False
       End With
    
       Selection.Find.Execute
       Selection.MoveDown Unit:=wdParagraph, Count:=1, Extend:=wdExtend
       Selection.Copy
       Url_stroka = Selection
       
       Windows(finishfile).Activate ' Переходим в окно с файлом_финиш
       
       Selection.MoveDown Unit:=wdLine, Count:=1
       Selection.TypeParagraph
       Selection.Paste
    
    Else
    ' Переходим к следующей сноске
    Windows(finishfile).Activate ' Переходим в окно с файлом_финиш
    With Selection.Font
    .ColorIndex = wdGreen
    End With
    Selection.MoveDown Unit:=wdLine, Count:=1
    
    End If
    
    Next i
    
    Windows(startfile).Activate ' Переходим в окно с файлом_старт
    Selection.MoveDown Unit:=wdLine, Count:=1
    Windows(finishfile).Activate ' Переходим в окно с файлом_финиш

    MsgBox ("Макрос основной завершил работу")

End Sub



Прикладываю и 2 файла для образца, с которыми работает этот макрос: "сноска_16_старт.rtf", "сноска_16_финиш.rtf"
...
Рейтинг: 0 / 0
26.12.2013, 16:47
    #38513390
Акинорев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает
Еще файлик "сноска_16_финиш.rtf"
...
Рейтинг: 0 / 0
26.12.2013, 16:54
    #38513404
Акинорев
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает
Для удобства прикладываю и программный файл макроса Макрос_основной.bas.
Можно импортировать в Visual Basic.
...
Рейтинг: 0 / 0
26.12.2013, 17:08
    #38513420
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает
Модератор: Учимся использовать тэги оформления кода - FAQ Там же есть про выделение внутри кода. Длинные простыни желательно убирать под спойлер.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Поиск в Word довольно длинной строки: With Selection.Find .... End With - не срабатывает / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]