পিছন থেকে সামনের দিকে কীভাবে পাঠ্য অনুসন্ধান করা যায়


2

ব্যাকস্টোরি: আমি কোনও ওয়েবসাইট থেকে অনুসন্ধানের ফলাফলগুলি অনুলিপি করে পেষ্ট করছি। আটকানো পাঠ্যটি নীচের চিত্রটির মতো কিছু দেখাচ্ছে:

এখানে চিত্র বর্ণনা লিখুন

লক্ষ্য: আমি অনুসন্ধানের ফলাফলগুলির প্রতিটি সেট থেকে কেবল দুটি লাইন চাই (সবুজ বর্ণিত)। অন্য সব কিছু মুছতে হবে। (আপনার কাছে শত শত অনুসন্ধান ফলাফল থাকলে খুব ক্লান্তিকর)। আমি একটি স্ট্রিং সংজ্ঞায়িত করতে চাই যা প্রথম শব্দটি লাল রঙের সাথে শুরু হয় এবং পরবর্তী থাম্বনেইল চিত্রের সাথে শেষ হয়। আমি তখন সেটি মুছতে চাই।

সুসংবাদ: লাল রঙের প্রথম শব্দটি সর্বদা একই থাকে। আমরা এটিকে "প্রথম" বলব।

আমার সমস্যা: যেহেতু অনুসন্ধান ফলাফলের সংখ্যা সর্বদা পরিবর্তিত হয়, কেবলমাত্র কোনও চিত্রের সাথে শেষ হওয়া সীমাটি নির্ধারণের কথা ভাবতে পারি কেবলমাত্র নথির শেষ থেকে শুরু করে কাজ শুরু করা work আমি শেষ ছবি দিয়ে শুরু করতে চাই

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

আমি অবশ্যই আশা করি এটি পরিষ্কার হয়ে গেছে। আমি যে কেউ স্পষ্ট ব্যাখ্যা চাইতে পারে খুশি হবে। আমি ভিবিএতে একজন নবজাতক। যদি আমি এটি সর্বশেষ অনুসন্ধানের ফলাফলটিতে কাজ করতে পারি তবে আমি ফলাফলের পুরো সেটটির যত্ন নিতে এই ম্যাক্রোটি লুপ করব।

যে কোনও এবং সমস্ত সহায়তার জন্য আপনাকে অনেক ধন্যবাদ!


কেবল পরিষ্কার করার জন্য: আমার কোডের এই অংশটি দরকার: [নির্বাচন.ফাইন্ড.টেক্সট = "প্রথম"] কোনওভাবে ডকুমেন্টের শেষে থেকে পিছনে সন্ধান করতে ম্যাক্রোকে বলতে। সম্ভবত সমাধানটি হ'ল ম্যাক্রোকে পুরো ডকুমেন্টের "প্রথম" শব্দের শেষ ঘটনাটি সন্ধান করতে। এটা কি সম্ভব?
জামিহো

উত্তর:


1

প্রদত্ত স্ট্রিংয়ের শেষ ঘটনাটি কীভাবে মুছতে হয় তা প্রদর্শনের জন্য কোড

Sub DeleteLastOccurence() 
    Set myRange = ActiveDocument.Content
    myRange.Find.Execute FindText:="Hello", Forward:=False
    If myRange.Find.Found = True Then myRange.Delete
End Sub

মূল অংশটি Forward:=Falseযেখানে আমরা ভিবিএকে পিছনের দিকে অনুসন্ধান করতে বলি

এর আগে | পরে

এখানে চিত্র বর্ণনা লিখুনএখানে চিত্র বর্ণনা লিখুন

ব্যবহৃত সম্পদ


সম্পাদন করা

এই কোডটি শেষ ছবিটির জন্য অনুসন্ধানগুলি স্নিপড করেছে। তারপরে এটি আপনার মূল শব্দের প্রথম উপস্থিতিটি অনুসন্ধান করতে পিছনে যায় ( এই উদাহরণে প্রথম )। এরপরে এটি আপনার মূল শব্দ এবং ছবির মধ্যকার পরিসর নির্বাচন করে। মুছে ফেলার মতো এটির সাথে আপনি যা খুশি করতে পারেন।

Sub DeleteLastOccurence()

    Dim rngPicture  As Range
    Dim rngJunk     As Range

    Set rngPicture = ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count).Range
    Set rngJunk = Range(0, rngPicture.Start)

    rngJunk.Find.Execute FindText:="First", Forward:=False

    If rngJunk.Find.Found = True Then Range(rngJunk.Start, rngPicture.Start).Select

End Sub

এখানে চিত্র বর্ণনা লিখুন


আমি আমার মূল পোস্টে ম্যাক্রো আপডেট করেছি। আমি আপনার পরামর্শটি আমার ম্যাক্রোর সাথে অন্তর্ভুক্ত করতে পেরেছি, তবে এখনও একটি সমস্যা রয়েছে। কিছু কারণে কোডটি "প্রথম" এর দ্বিতীয় থেকে শেষ ঘটনাটি খুঁজে পায়। ফলস্বরূপ, মুছে ফেলার জন্য যে পরিসীমাটি নির্বাচন করা হয়েছে তাতে আমি রাখতে চাইলে অনুসন্ধান ফলাফলের একটি সেট অন্তর্ভুক্ত। অন্য কথায়, যখন আমি এটি লুপ করি, এটি আমার চাওয়া ডেটার অর্ধেক মুছে দেয়। কেন এমন হতে পারে আপনার কোনও ধারণা আছে ??
জামিহো

@ জামিহো শেষ ছবিটির পরে অযাচিত জঞ্জাল দিয়ে কী করা উচিত ?
নিক্সদা

সেটিও মুছে ফেলা হবে। যখন এই ম্যাক্রো সফল হয়, এটি অনুসন্ধানের প্রতিটি ফলাফল থেকে আমি চাই দুটি লাইন দিয়ে আমাকে ছেড়ে চলে যায় - একক ফাঁকা রেখার দ্বারা পৃথক। এখন পর্যন্ত, আমি ম্যানুয়ালি শেষ ছবিটির পরে প্রদর্শিত অযাচিত জাঙ্কটি মুছে ফেলছি, তারপরে আমি ম্যাক্রো চালাচ্ছি।
জামিহো

সময় দেওয়ার জন্য আপনাকে অনেক ধন্যবাদ! আপনার দ্বিতীয় স্নিপড কোডটি দুর্দান্ত কাজ করে। আমি সবেমাত্র "rngPicture.start" "rngPicture.end" এ পরিবর্তন করেছি যাতে এটি ছবিগুলিও মুছে দেয়। তা ছাড়া আমার যা প্রয়োজন তা হ'ল।
জামিহো

0

আপনাকে কেবল আমার তৈরি পণ্যটি দেখানোর জন্য:

প্রথমত, ম্যাক্রো প্রথম ছবিটি মুছবে (নথির শীর্ষে)। এটি নিশ্চিত করবে যে আমার লুপটি নথির শীর্ষে পৌঁছে গেলে ত্রুটি ঘটে

তারপরে, এটি আপনি যা আমাকে সাহায্য করেছিলেন তা করতে এগিয়ে যায় এবং ত্রুটি না হওয়া পর্যন্ত চিরকালের জন্য লুপ হয়ে যায় (যেমন, এটি অন্য কোনও চিত্র খুঁজে পাবে না)। এই সময়ে, ম্যাক্রো শেষ হয়।

Sub DeleteLastOccurence()

    On Error GoTo GetOut

    ActiveDocument.InlineShapes(1).Delete

    Do
        Dim rngPicture  As Range
        Dim rngJunk As Range

        Set rngPicture = ActiveDocument.InlineShapes(ActiveDocument.InlineShapes.Count).Range
        Set rngJunk = ActiveDocument.Range(0, rngPicture.Start)

        rngJunk.Find.Execute FindText:="KeyWord", Forward:=False

        If rngJunk.Find.Found = True Then ActiveDocument.Range(rngJunk.Start, rngPicture.End).Select
            Selection.Delete

    Loop While 1 + 1 = 2


GetOut:

End Sub

আমি নিশ্চিত যে "লুপ থাকাকালীন 1 + 1 = 2 ব্যতীত চিরকালের জন্য লুপ বলার আরও ভাল উপায় আছে but তবে আমি বুঝতে পেরেছি এটি কার্যকর হবে l লোল।

আবার ধন্যবাদ!


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.