يتسم أداء بعض ملفات Excel بالبطء مع ارتباطات البيانات
المشكلة
إذا كان ملف Excel يحتوي على ارتباطات بيانات Excel (راجع 21. ارتباطات بيانات Excel) والكثير من أنماط الخلايا، فقد يبدأ في التمرير ببطء شديد وقد تصبح استجابة Excel بطيئة للغاية.
قد تحدث هذه المشكلة إذا كان ملف Excel يحتوي على أكثر من 3000 نمط خلية. يمكنك التحقق من عدد أنماط الخلايا باستخدام أمر VBA التالي في النافذة الحالية:
print Activeworkbook.Styles.Count
فيما يلي خطوات التحقق من هذا الأمر بالتفصيل:
- اضغط على المفتاحين Alt+F11 لفتح محرر VBA.
- انتقل إلى النافذة الحالية. إذا لم تكن ظاهرة، يمكنك عرضها بواسطة النقر فوق عرض ← النافذة الحالية.
- اكتب الأمر التالي واضغط على Enter
print Activeworkbook.Styles.Count
الحل: تنظيف المصنفات المتأثرة بالمشكلة
- قم بنسخ أوراق العمل الخاصة بك إلى مصنف جديد
في Office 2013 والإصدارات الأحدث، يؤدي نسخ أوراق العمل بين المصنفات إلى منع تراكم أنماط الخلايا غير المستخدمة بشكل افتراضي:
- حدد كل الأوراق في المصنف الخاص بك عن طريق الضغط مع الاستمرار على المفتاح SHIFT ثم انقر فوق ورقة العمل الأولى والأخيرة
- انقر بزر الماوس الأيمن فوق التحديد: نقل أو نسخ… ← إلى المصنف: (مصنف جديد) وحدد إنشاء نسخة ← موافق
- احفظ المصنف الجديد باسم جديد
في Office 2007 و2010، يؤدي نسخ ورقة عمل إلى مصنف جديد إلى نسخ كل أنماط الخلايا غير المستخدمة. لمنع حدوث ذلك، يرجى تنشيط الإصلاح العاجل التالي أولاً:
في حالة تثبيت آخر تحديثات لإصدار Office الموجود لديك، فعلى الأرجح أن هذا الإصلاح العاجل مثبت بالفعل. ومع ذلك، يجب أيضًا تنشيط هذا الإصلاح باستخدام الحل إصلاح المشكلة الذي توفره Microsoft أو في السجل على النحو الموضح في مقالات Microsoft التالية:
- Microsoft Office 2007: KB2553085
- Microsoft Office 2010: KB2598127 الذي تم نشره في تحديث Office 2010 لشهر أبريل عام 2012.
إذا لم ينجح تنشيط الإصلاح العاجل، فقم بتطبيق التحديث المذكور في قسم الحل في مقالات Microsoft الموضحة أعلاه.
- تنظيف المصنفات الخاصة بك باستخدام أداة تنظيف
استخدم أداة التنظيف الموصى بها من Microsoft في KB213904. باستخدام الأداة XLStyles، انقر فوق جلب ملف Excel، وحدد فرض كل أنماط الخلايا على 'عادي'، ثم انقر فوق معالجة الملف. عند فتح Excel باستخدام الملف الذي تم تنظيفه، احفظه باسم جديد.
- إزالة أنماط الخلايا المخصصة من المصنف باستخدام وحدة ماكرو بلغة VBA
افتح محرر VBA بواسطة الضغط على المفتاحين Alt + F11. حدد المصنف الخاص بك ثم انقر فوق إدراج ← وحدة نمطية. ثم الصق إحدى وحدات الماكرو التالية وقم بتشغيلها بواسطة الضغط على المفتاح F5:
DeleteCustomStyles() لإزالة كل أنماط الخلايا المخصصة من المصنف الخاص بك.
Sub DeleteCustomStyles() Dim st As Style Dim i, i_cust As Long i_cust = 0 For i = (ActiveWorkbook.Styles.Count) To 1 Step -1 With ActiveWorkbook.Styles(i) If .BuiltIn = False Then On Error Resume Next .Locked = False On Error GoTo 0 If Not .Locked Then .Delete i_cust = i_cust + 1 End If End If End With If (i Mod 100) = 0 Then Debug.Print i Next MsgBox "Styles deleted: " & i_cust & " styles" & Chr(13) & "Styles left: " & ActiveWorkbook.Styles.Count End Sub
Remove_Styles() لإزالة فقط أنماط الخلايا المخصصة غير المستخدمة من المصنف الخاص بك. وهي مماثلة لوحدة الماكرو الموضحة أعلاه، ولكن قد يستغرق تشغيلها وقتًا طويلاً. قام دعم Microsoft Office بتوفير وحدة الماكرو.
Option Explicit Dim st_array() As String Dim i_x As Long Sub Remove_Styles() Dim stname As String Dim ustname As String Dim uc As Range Dim retval As Boolean Dim ust As Style Dim sh As Worksheet i_x = 0 For Each sh In ActiveWorkbook.Worksheets For Each uc In sh.UsedRange stname = uc.Style.Name retval = Check_Array(stname) If retval = False Then ReDim Preserve st_array(i_x) st_array(i_x) = stname i_x = i_x + 1 End If Next uc Next sh For Each ust In ActiveWorkbook.Styles If ust.BuiltIn = False Then ustname = ust.Name retval = Delete_Styles(ustname) On Error Resume Next If retval = True Then ust.Delete On Error GoTo 0 End If Next ust End Sub Function Delete_Styles(stylename As String) As Boolean Delete_Styles = True Dim i_y As Long For i_y = 0 To i_x - 1 If st_array(i_y) = stylename Then Delete_Styles = False Next i_y End Function Function Check_Array(stylename As String) As Boolean Check_Array = False Dim i_y As Long For i_y = 0 To i_x - 1 If st_array(i_y) = stylename Then Check_Array = True Next i_y End Function
سيكون الحل الأفضل هو منع لصق أنماط الخلايا غير المستخدمة، لكنه يتطلب من Microsoft إصلاح خطأ في Excel 2007 والإصدارات الأحدث. حتى الآن لا تعتبر Microsoft تأثير هذه المشكلة على الأعمال كبيرًا بدرجة تكفي لتقديم هذا الحل. إذا كان لدى شركتك عقد دعم من Microsoft Office وكنت تريد الاتصال بشركة Microsoft لطلب إصلاح، يمكنك الرجوع إلى رقم حالة Microsoft 113012810172527.
التفسير
تحتوي بعض مصنفات .xlsx على عدد كبير (عدة عشرات الآلاف) من أنماط الخلايا بسبب الأخطاء وتصميم التعليمات البرمجية المسبب للمشكلات في برنامج Excel. تعد أدوات الإبلاغ أيضًا عاملاً من عوامل حدوث المشكلة، حيث تؤدي في بعض الأحيان إلى إنشاء العديد من أنماط الخلايا دون داع.