أقدم لكم اليوم حل لمشكلة قام بطرحها أحد الأخوة على الفيس بوك لتعم الفائدة .. والمشكلة التي طرحت بهذا الشكل
...
يقوم الكود بفحص الاسم الموجود في ورقة العمل Sheet1 في الخلية A1 ، ويطابقه بالاسم الفعلي للمصنف الحالي ، فإذا تطابقا تظهر رسالة بأن المستخدم لم يقم بتغيير اسم المصنف ، أما إذا لم يتطابق فهذا يعني أن المستخدم قد قام بتغيير اسم المصنف أو أنه قام بتغيير قيمة الخلية الموجودة في ورقة العمل Sheet1 ، وفي هذه الحالة يتم إعادة تسمية المصنف مرة أخرى بناءً على قيمة الخلية A1 في ورقة العمل Sheet1 ...
الخدعة في حل المشكلة أنه يتم حفظ المصنف بالاسم بناءً على قيمة الخلية ثم حذف المصنف القديم الذي تم تغيير اسمه.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim sName As String, sPath As String
With ThisWorkbook
sName = .Worksheets("Sheet1").Range("A1").Value
sName = .Path & "\" & sName & ".xlsm"
sPath = .FullName
If sName <> sPath Then
.SaveAs sName: Kill sPath
Else
MsgBox "The User Did Not Rename The Workbook.", 64
End If
End With
End Sub