Backstory: Tôi đang sao chép và dán kết quả tìm kiếm từ một trang web thành word. văn bản được dán trông giống như hình ảnh dưới đây:
Mục tiêu: Tôi chỉ muốn hai dòng từ mỗi bộ kết quả tìm kiếm (được mô tả bằng màu xanh lá cây). Mọi thứ khác cần phải được xóa. (rất tẻ nhạt khi bạn có hàng trăm kết quả tìm kiếm). Tôi muốn xác định một chuỗi bắt đầu bằng từ đầu tiên màu đỏ và kết thúc bằng hình ảnh thu nhỏ tiếp theo. Sau đó tôi muốn xóa nó.
tin tốt: từ đầu tiên trong màu đỏ luôn luôn giống nhau. Chúng tôi sẽ gọi nó là "Đầu tiên".
Vấn đề của tôi: vì số lượng kết quả tìm kiếm sẽ luôn thay đổi, cách duy nhất tôi có thể nghĩ đến khi xác định một phạm vi kết thúc bằng một hình ảnh là bắt đầu từ cuối tài liệu và làm việc. Tôi muốn bắt đầu với hình ảnh cuối cùng
ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count)
sau đó tìm kiếm ngược từ hình ảnh này cho văn bản "Đầu tiên". Khi tôi tìm thấy sự xuất hiện đầu tiên của từ đó, tôi muốn tạo một phạm vi bằng cách sử dụng hình ảnh cuối cùng và từ đó để tôi có thể xóa nó. Tôi không thể tìm ra cách để làm điều này.
Tiến bộ cho đến nay: Đây là những gì tôi có cho đến nay: cho đến nay, nó tìm kiếm chuyển tiếp cho văn bản "đầu tiên". Làm thế nào để tôi đảo ngược điều này?
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
Tôi chắc chắn hy vọng điều này là rõ ràng. Tôi sẽ rất vui khi thêm bất kỳ ai làm rõ. Tôi là người mới ở VBA. Nếu tôi có thể làm điều này hoạt động trên kết quả tìm kiếm cuối cùng, thì tôi sẽ lặp macro này để chăm sóc toàn bộ tập hợp kết quả.
cảm ơn bạn rất nhiều vì bất kỳ và tất cả sự giúp đỡ!