السلام عليكم ورحمة الله وبركاته
أقدم لكم كود يقوم ب
تصدير ورقة عمل محددة إلى مصنف جديد ، ويحول المعادلات التي بورقة العمل المصدرة إلى قيم ، وتتم عملية التصدير إلى نفس مسار المصنف الحالي
في الملف المرفق مصنف يحتوي على ورقتي عمل والمطلوب تصدير ورقة العمل المسماة Data إلى مصنف جديد في نفس مسار المصنف الحالي ، أي لابد أن يكون المصنف الحالي في نفس المسار ، ويمكن التعديل في الكود بحيث يتم تغيير المسار ليلائم المستخدم.
وأخيراً إليكم الكود المستخدم :
CODE
Sub Export_Specific_Sheet_To_New_Workbook_Delete_VBA_Codes()
Dim ws As Worksheet
Dim objComp As Object
Dim xPath As String
xPath = Application.ActiveWorkbook.Path
Set ws = Sheets("Data")
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
With ws
.Copy
Application.ActiveWorkbook.SaveAs Filename:=xPath & "" & .Name & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
ActiveSheet.UsedRange.Value = ActiveSheet.UsedRange.Value
With ActiveWorkbook.VBProject.VBComponents(ws.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, "Option Explicit"
End With
For Each objComp In ActiveSheet.Parent.VBProject.VBComponents
If (objComp.Name = ActiveSheet.CodeName) Then objComp.Name = "Sheet1"
Next objComp
ActiveSheet.Shapes("Button 1").Delete
Application.ActiveWorkbook.Close True
End With
Application.DisplayAlerts = True
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox "Done...", 64
End Sub
لتنفيذ الكود قم بالضغط على Alt + F8 لتفتح لك نافذة تختار منها اسم الإجراء الفرعي المسمى Export_Specific_Sheet_To_New_Workbook_Delete_VBA_Codes ثم انقر الأمر Run ، لتتم عملية تصدير ورقة العمل المطلوبة إلى مصنف جديد.
إذا كانت ورقة العمل المراد تصديرها تحتوي على كود في حدث ورقة العمل ، وأردت حذفه ، فسيقوم الكود بعمل ذلك من خلال الأسطر
CODE
With ActiveWorkbook.VBProject.VBComponents(ws.CodeName).CodeModule
.DeleteLines 1, .CountOfLines
.InsertLines 1, "Option Explicit"
End With
كما يقوم الكود بتسمية الاسم البرمجي لورقة العمل من خلال هذا الجزء
CODE
For Each objComp In ActiveSheet.Parent.VBProject.VBComponents
If (objComp.Name = ActiveSheet.CodeName) Then objComp.Name = "Sheet1"
Next objComp
كما يحتوي الكود على سطر لحذف زر الأمر الموجود في ورقة العمل Data ...
CODE
ActiveSheet.Shapes("Button 1").Delete
أي أن هذا الكود يحتوي على العديد من الأجزاء التي يمكنك استخدامها في أكواد أخرى
رابط الملف من هنا
إعداد وتقديم / ياسر خليل أبو البراء