वीबीए: यदि नाम में विशिष्ट पाठ है तो शीट हटा दें


आप Excel कार्यपुस्तिका में प्रत्येक शीट को हटाने के लिए VBA में निम्नलिखित सिंटैक्स का उपयोग कर सकते हैं जिसमें विशिष्ट पाठ शामिल है:

 SubDeleteSheets ()

    Dim TextToFind As String
    Dim TextWildcard As String
    Dim Ws As Worksheet
    Dim i As Integer
    
    'prompt user for text to search for in sheet names
    TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
                                    ThisWorkbook.ActiveSheet.Name, , , , , 2)
                                    
    TextWildcard = " * " & TextToFind & " * "
    Application.DisplayAlerts = False
    
    'loop through sheets and delete each sheet that contains text
    i = 0
    For Each Ws In ThisWorkbook.Sheets
        If Ws.Name Like TextWildcard Then
            Ws.Delete
            i = i + 1
        End If
    Next Ws
    
    Application.DisplayAlerts = True
    
End Sub

जब आप इस विशेष मैक्रो को चलाते हैं, तो एक इनपुट बॉक्स दिखाई देगा जहां आप एक विशिष्ट टेक्स्ट स्ट्रिंग दर्ज कर सकते हैं।

एक बार जब आप एंटर दबाते हैं, तो एक्सेल वर्कबुक में उस विशिष्ट टेक्स्ट वाली प्रत्येक शीट स्वचालित रूप से हटा दी जाएगी।

ध्यान दें : एप्लिकेशन.डिस्प्लेअलर्ट्स=गलत लाइन वीबीए को शीट हटाने की प्रक्रिया को प्रदर्शित नहीं करने के लिए कहती है, जिससे इसके निष्पादन में तेजी आती है।

निम्नलिखित उदाहरण दिखाता है कि व्यवहार में इस वाक्यविन्यास का उपयोग कैसे करें।

उदाहरण: विशिष्ट पाठ वाली शीट को हटाने के लिए VBA का उपयोग करें

मान लीजिए कि हमारे पास निम्नलिखित एक्सेल वर्कबुक है जिसमें चार शीट हैं:

अब मान लीजिए कि हम हर उस शीट को हटाना चाहते हैं जिसके शीट नाम में “टीम” है।

ऐसा करने के लिए हम निम्नलिखित मैक्रो बना सकते हैं:

 SubDeleteSheets ()

    Dim TextToFind As String
    Dim TextWildcard As String
    Dim Ws As Worksheet
    Dim i As Integer
    
    'prompt user for text to search for in sheet names
    TextToFind = Application.InputBox(" Delete Sheets That Contain: ", _
                                    ThisWorkbook.ActiveSheet.Name, , , , , 2)
                                    
    TextWildcard = " * " & TextToFind & " * "
    Application.DisplayAlerts = False
    
    'loop through sheets and delete each sheet that contains text
    i = 0
    For Each Ws In ThisWorkbook.Sheets
        If Ws.Name Like TextWildcard Then
            Ws.Delete
            i = i + 1
        End If
    Next Ws
    
    Application.DisplayAlerts = True
    
End Sub

जब हम इस मैक्रो को चलाते हैं, तो एक इनपुट बॉक्स दिखाई देता है जहां हम वह टेक्स्ट दर्ज कर सकते हैं जिसे हम शीट नामों में खोजना चाहते हैं:

एक बार जब हम “टीम” टाइप करते हैं और ओके दबाते हैं, तो शीट नाम जिसमें कहीं भी “टीम” होता है, स्वचालित रूप से हटा दिया जाएगा:

ध्यान दें कि शीट नाम में “टीम” वाली दो शीट हटा दी गई हैं।

जिन शीटों में “टीम” नहीं थी उन्हें अछूता छोड़ दिया गया।

अतिरिक्त संसाधन

निम्नलिखित ट्यूटोरियल बताते हैं कि वीबीए में अन्य सामान्य कार्य कैसे करें:

वीबीए: किसी कार्यपुस्तिका में शीटों की संख्या कैसे गिनें
वीबीए: किसी अन्य कार्यपुस्तिका से डेटा कैसे निकालें
वीबीए: एकाधिक पंक्तियाँ कैसे सम्मिलित करें

एक टिप्पणी जोड़ने

आपका ईमेल पता प्रकाशित नहीं किया जाएगा. आवश्यक फ़ील्ड चिह्नित हैं *