Vba: احذف الورقة إذا كان الاسم يحتوي على نص محدد


يمكنك استخدام بناء الجملة التالي في VBA لحذف كل ورقة في مصنف Excel الذي يحتوي على نص محدد:

 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

عند تشغيل هذا الماكرو بالتحديد، سيظهر مربع إدخال حيث يمكنك إدخال سلسلة نصية محددة.

بمجرد الضغط على Enter، سيتم حذف كل ورقة في مصنف Excel تحتوي على هذا النص المحدد تلقائيًا.

ملاحظة : السطر Application.DisplayAlerts=False يخبر VBA بعدم عرض عملية حذف الأوراق، مما يؤدي إلى تسريع تنفيذها.

يوضح المثال التالي كيفية استخدام بناء الجملة هذا عمليًا.

مثال: استخدم VBA لحذف الأوراق التي تحتوي على نص محدد

لنفترض أن لدينا مصنف Excel التالي الذي يحتوي على أربع أوراق:

لنفترض الآن أننا نريد حذف كل ورقة تحتوي على كلمة “Team” في اسم الورقة.

يمكننا إنشاء الماكرو التالي للقيام بذلك:

 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

عندما نقوم بتشغيل هذا الماكرو، يظهر مربع إدخال حيث يمكننا إدخال النص الذي نريد البحث عنه في أسماء الأوراق:

بمجرد كتابة “Team” والضغط على OK ، سيتم حذف أسماء الأوراق التي تحتوي على “Team” في أي مكان في الاسم تلقائيًا:

لاحظ أنه تمت إزالة الورقتين اللتين تحتويان على كلمة “Team” في اسم الورقة.

تم ترك أية أوراق لا تحتوي على “الفريق” دون تغيير.

مصادر إضافية

تشرح البرامج التعليمية التالية كيفية تنفيذ المهام الشائعة الأخرى في VBA:

VBA: كيفية حساب عدد الأوراق في المصنف
فبا: كيفية استخراج البيانات من مصنف آخر
VBA: كيفية إدراج أسطر متعددة

Add a Comment

ایمئیل یایینلانمایاجاق ایسته‎نیله‎ن بوشلوقلار خاللانمیشدیر *