عثر "مفتى المستند" على أسماء مخفية في المصنف. يمكن لهذه الأسماء تخزين معلومات مخفية حول سيناريوهات Solver. على سبيل المثال، عند استخدام الوظائف الإضافية Solver لتشغيل سيناريو، قد تقوم بتخزين معلومات حول معلمات الحساب والبيانات الحساسة الأخرى كلأسماء المخفية في المصنف.
هام: توفر Microsoft أمثلة برمجية للتوضيح فقط، بدون ضمان سواء تم التعبير عنه أو ضمنيا. يشمل ذلك، على سبيل المثال لا يقتصر على، الضمانات الضمنية ل قابلية الاستخدام أو اللياقة لغرض معين. تفترض هذه المقالة أنك على دراية بلغة البرمجة التي يتم إظهارها والأدوات المستخدمة لإنشاء إجراءات تصحيح الأخطاء وتصحيحها. يمكن لمهندسي دعم Microsoft المساعدة في شرح وظائف إجراء معين، ولكن لن يتم تعديل هذه الأمثلة لتوفير وظائف إضافية أو إجراءات إنشاء لتلبية متطلباتك المحددة.
المشكلة
لا يمكن لمفتى المستند إزالة هذه الأسماء المخفية لك.
الحل المقترح
قم بتشغيل الماكرو التالي لإزالة الأسماء المخفية. يعرض الماكرو مربع رسالة يسرد ثلاثة عناصر: (1) ما إذا كان الاسم المعرف مرئيا أو مخفيا، (2) الاسم المعرف، و(3) ما يشير إليه هذا الاسم (مرجع خلية المصنف). يمكنك اختيار نعم أو لا لحذف كل اسم معرف أو الاحتفاظ به.
ملاحظة: إذا كنت تستخدم هذا الماكرو لإزالة الأسماء المخفية، فقد لا تعمل الوظائف الإضافية (مثل Solver) أو وحدات الماكرو كما هو متوقع وقد تفقد البيانات المخفية المقترنة بها. يؤثر هذا الماكرو أيضا على أي اسم معرف مخفي، وليس فقط تلك التي أضافها Solver.
إنذار: إذا كانت أسماء الأوراق تحتوي على مسافات، فقد تتلقى رسالة خطأ عند محاولة حذف الاسم المعرف.
إزالة الأسماء المخفية
' Module to remove all hidden names on active workbook
Sub Remove_Hidden_Names()
' Dimension variables.
Dim xName As Variant
Dim Result As Variant
Dim Vis As Variant
' Loop once for each name in the workbook.
For Each xName In ActiveWorkbook.Names
'If a name is not visible (it is hidden)...
If xName.Visible = True Then
Vis = "Visible"
Else
Vis = "Hidden"
End If
' ...ask whether or not to delete the name.
Result = MsgBox(prompt:="Delete " & Vis & " Name " & _
Chr(10) & xName.Name & "?" & Chr(10) & _
"Which refers to: " & Chr(10) & xName.RefersTo, _
Buttons:=vbYesNo)
' If the result is true, then delete the name.
If Result = vbYes Then xName.Delete
' Loop to the next name.
Next xName
End Sub