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

Необходимо написать скрипт на 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
Извлечение участка текста из Word-документа, содержащего заданную подстроку.
    #39113368
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
.Expand(wdParagraph)

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

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

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

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

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


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