إجمالي مرات مشاهدة الصفحة

السبت، 16 أبريل 2016

تصدير ورقة عمل محددة إلى مصنف جديد Export Specific Sheet To New Workbook

السلام عليكم ورحمة الله وبركاته

أقدم لكم كود يقوم بتصدير ورقة عمل محددة إلى مصنف جديد ، ويحول المعادلات التي بورقة العمل المصدرة إلى قيم ، وتتم عملية التصدير إلى مجلد باسم Export.
في الملف المرفق مصنف يحتوي على ورقتي عمل والمطلوب تصدير ورقة العمل المسماة Data إلى مصنف جديد في نفس مسار المصنف الحالي في مجلد باسم Export ، أي لابد أن يكون المصنف الحالي في نفس المسار ، ويمكن التعديل في الكود بحيث يتم تغيير المسار ليلائم المستخدم.
وأخيراً إليكم الكود المستخدم :

Sub SplitSpecificSheet()
    Dim xPath As String
    Dim SH As Worksheet
    
    xPath = Application.ActiveWorkbook.Path
    Set SH = Sheets("Data")
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
        With SH
            .Copy
            Application.ActiveWorkbook.SaveAs Filename:=xPath & "\Export\" & .Name & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
            ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
            Application.ActiveWorkbook.Close True
        End With
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    MsgBox "Done...", 64
End Sub

لتنفيذ الكود قم بالضغط على Alt + F8 لتفتح لك نافذة تختار منها اسم الإجراء الفرعي المسمى SplitSpecificSheet ثم انقر الأمر Run ، لتتم عملية تصدير ورقة العمل المطلوبة إلى مصنف جديد.
إذا كانت ورقة العمل المراد تصديرها تحتوي على كود في حدث ورقة العمل ، وأردت حذفه ، فيمكنك استخدام الكود بهذا الشكل :

Sub SplitSpecificSheet()
    Dim xPath As String
    Dim strName As String
    Dim SH As Worksheet
    
    xPath = Application.ActiveWorkbook.Path
    Set SH = Sheets("Data")
    
    Application.ScreenUpdating = False
    Application.EnableEvents = False
    Application.DisplayAlerts = False
        With SH
            .Copy
            Application.ActiveWorkbook.SaveAs Filename:=xPath & "\Export\" & .Name & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
            ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
            strName = Worksheets("Data").CodeName
            With ActiveWorkbook.VBProject.VBComponents(strName).CodeModule
                .DeleteLines 1, .CountOfLines
            End With
            Application.ActiveWorkbook.Close True
        End With
    Application.DisplayAlerts = True
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    
    MsgBox "Done...", 64
End Sub



إعداد / ياسر خليل أبو البراء

هناك 11 تعليقًا:

  1. السلام عليكم
    دوم ودايمة عليكم يا مبدع كل ابداع - وزادتك الله احتراف

    ردحذف
  2. وعليكم السلام أخي الكريم عبد الرحمن البغدادي
    بارك الله فيك وجزاك الله خيراً على مرورك العطر بالموضوع وبالمدونة
    في انتظار تفاعلكم دائماً

    ردحذف
  3. بارك الله فيك ، اكثر من مبدع.
    ولو جعلته على حسب المستخدم واختياره للاوراق التي يريد ترحيها، يبقى افضل بكثير.

    شكرا لك

    ردحذف
  4. الموضوع بسيط قم فقط بتغيير اسم ورقة العمل ..لا أدري كيف تريد أن يكون حسب المستخدم واختياره؟

    ردحذف
  5. اقصد ، ان استطيع اختيار الاوراق التي اريدها لترحيلها

    ردحذف
  6. هل تقصد اختيار أكثر من ورقة عمل لتصديرها كل ورقة في مصنف جديد ؟ هل هذا طلبك؟ أم تقصد أن يكون هناك إمكانية للاحتيار وفي هذه الحالة كيف تريد أن تتم عملية الاختيار؟

    ردحذف
  7. اريد فقط نفس الكود ويصدره الي ملف واحد فقط، ولكن الاوراق المحددة ، يعني انا اختار اوراق معينة من الملف لتصديرها ،اي الكود يبقى تصدير الاوراق المحددةاو النشطة، وسوف اختاره بالطريقة العادية.

    ردحذف
  8. الأمر مختلف في هذه الحالة وليس كما هو الحال في حالة التصدير لورقة عمل واحدة .. عموماً ربنا ييسر الأمور وسأقوم بفتح موضوع جديد بطلبك إن شاء الله

    ردحذف
  9. شكرا لك ، للاهتمام والرد علينا ، الرد علينا يكفي

    ردحذف
  10. جزاك الله خيراً أخي الفاضل ومشكور على مرورك العطر

    ردحذف