Предыстория: я копирую и вставляю результаты поиска с веб-сайта в слово. вставленный текст выглядит примерно так:
Цель: я хочу только две строки из каждого набора результатов поиска (показаны зеленым цветом). Все остальное нужно удалить. (очень утомительно, когда у вас есть сотни результатов поиска). Я хочу определить строку, которая начинается с первого слова в красном и заканчивается следующим эскизом изображения. Затем я хочу удалить это.
Хорошая новость: первое слово в красном всегда одно и то же. Мы назовем это "Первый".
Моя проблема: поскольку количество результатов поиска всегда будет варьироваться, я могу думать только об определении диапазона, заканчивающегося изображением, - начать с конца документа и продолжить работу. Я хочу начать с последней картинки
ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count)
затем ищите в обратном направлении от этой картинки текст "Первый". Как только я нахожу первое вхождение этого слова, я хочу создать диапазон, используя последнее изображение и это слово, чтобы я мог удалить его. Я не могу понять, как это сделать.
Прогресс на данный момент: вот что у меня есть: на данный момент он ищет текст "первым". Как я могу изменить это?
Sub Clear_Stuff()
Dim blnFound As Boolean
Dim Pic As Range
Dim First As Range
Dim rngFound As Range
Dim LastPic As InlineShape
Set LastPic = ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count)
Application.ScreenUpdating = True
'=====================================================================================
' Selects the last picture on the document, moves the selection to the right once,
' and sets variable Pic to that selection
'-------------------------------------------------------------------------------------
LastPic.Select
Selection.MoveRight wdWord
Set Pic = Selection.Range
'======================================================================================
' searches for the text "First", moves the selection to the left once
' and sets variable First to that selection
' then it sets the range variable rngFound with Pic and First as its bounds
'--------------------------------------------------------------------------------------
Selection.Find.Execute FindText:="First", Forward:=False
blnFound = Selection.Find.Execute
If blnFound Then
Selection.MoveLeft wdWord
Set First = Selection.Range
Set rngFound = ActiveDocument.Range(First.Start, Pic.Start)
End If
'========================================================================
' Deletes the range
'------------------------------------------------------------------------
rngFound.Select
Selection.Delete
Application.ScreenUpdating = True
End Sub
Я, конечно, надеюсь, что это понятно. Я буду рад добавить любые разъяснения, которые кто-либо может попросить. Я новичок в VBA. Если я смогу заставить это работать с последним результатом поиска, я затем зациклю этот макрос, чтобы позаботиться обо всем наборе результатов.
Большое спасибо за любую помощь!