Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Извлечение участка текста из Word-документа, содержащего заданную подстроку. / 5 сообщений из 5, страница 1 из 1
25.11.2015, 16:40
    #39113349
AlexSheff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
Добрый день!

Необходимо написать скрипт на VBScript, выполняющий следующую задачу:
По заданной пользователем строке текста(произвольной длины) определять, есть ли она в Word-документе.

Если есть, то извлекать либо абзац, либо предложения, содержащие указанную строку.

На данный момент я сделал самую простую для меня часть - поиск. Такой код получился:
Код: 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.
Option Explicit

Dim Content, stringForSearch
Dim objWord, objFSO, objDoc, objSelection
Dim folderPath, fileName, filePath

folderPath = WScript.Arguments.Item(0)
fileName = WScript.Arguments.Item(1)
stringForSearch = WScript.Arguments.Item(2)

filePath = folderPath & "\" & fileName

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWord = CreateObject("Word.Application") 

objWord.DisplayAlerts = 0
Set objDoc = objWord.Documents.Open(filePath)
Set objSelection = objWord.Selection

objSelection.Find.Text = stringForSearch
objSelection.Find.Forward = TRUE
objSelection.Find.MatchWholeWord = TRUE

If objSelection.Find.Execute Then
	Wscript.Echo "Found"
Else
	Wscript.Echo "Didn't find"
End If

objDoc.Close
Set objDoc = Nothing

Set objSelection = Nothing
Set objFSO = Nothing

objWord.Quit
Set objWord = Nothing



По поводу второго пункта есть только соображения: в результате поиска строки возвращать номер ее позиции в документе, а после искать ближайшие символы, например, точки. Даже если эта идея верна, я не знаю как ее реализовать.
Скажите, пожалуйста, как это можно решить?

Заранее благодарю за помощь.
...
Рейтинг: 0 / 0
25.11.2015, 16:51
    #39113368
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
Код: vbnet
1.
.Expand(wdParagraph)

или
Код: vbnet
1.
.Expand(wdSentence)
...
Рейтинг: 0 / 0
25.11.2015, 17:58
    #39113455
AlexSheff
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
Shocker.Pro,

Спасибо за помощь. Но не могли бы Вы показать применение данных методов в контексте моей задачи? С VBScript я на "Вы" и гугление не особо помогло.
...
Рейтинг: 0 / 0
25.11.2015, 18:11
    #39113466
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
Знание VBScript тут совсем не причем, а вместо гугления в таких случаях следует заглянуть в хелп ворда.

В вашем случае, после выполнения objSelection.Find.Execute в самом objSelection содержится ссылка на найденный диапазон в документе. Операция objSelection.Expand(wdParagraph) расширит этот диапазон до абзаца, то есть после ее выполнения в objSelection будет искомый абзац.

Ах да, в самом скрипте потребуется определить переменную wdParagraph (ее значение: 4), а можно просто использовать напрямую 4 в качестве аргумента (просто это менее наглядно).
...
Рейтинг: 0 / 0
25.11.2015, 19:35
    #39113523
Казанский
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
AlexSheff, а почему бы не объединить первый и второй аргумент в один аргумент - путь к файлу? В этом случае можно в Проводнике "перетаскивать и бросать" файл на файл .VBS, это аналогично запуску .VBS с аргументом, равным пути к файлу.
Я так делал несколько раз на практике, юзерам нравится. А строку поиска можно запрашивать через Inputbox.

Кстати, objFSO в коде не используется.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Извлечение участка текста из Word-документа, содержащего заданную подстроку. / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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