Skip to main content

كيفية حفظ واستخدام وحدات VBA الخاصة بك في جميع المصنفات في Excel؟

Author: Zhoumandy Last Modified: 2025-08-06

هناك العديد من الحالات التي قد تحتاج فيها إلى استخدام نفس ماكرو VBA بشكل متكرر في مصنفات Excel المختلفة لأداء مهام مثل أتمتة الحسابات المتكررة، تنسيق البيانات، أو الوظائف المخصصة مثل تحويل الأرقام إلى كلمات. التحدي الشائع هو أنه بشكل افتراضي، يتم تخزين الماكرو فقط داخل المصنف الذي تم إنشاؤه فيه، مما يعني أنه لا يمكنك الوصول إليها أو إعادة استخدامها بسهولة في المستندات الجديدة. ومع ذلك، يوفر Excel عدة طرق مرنة لجعل ماكرو VBA متاحًا على مستوى العالم، مما يلغي الحاجة إلى إعادة نسخ الكود كلما بدأت مصنفًا جديدًا. يقدم هذا البرنامج التعليمي تعليمات شاملة حول الأساليب المختلفة لضمان أن تكون ماكرو VBA الخاصة بك في متناول اليد عبر جميع المصنفات، مما يحسن إنتاجيتك وسير العمل.

A screenshot showing the Add-ins dialog in Excel

حفظ واستخدام كود VBA في جميع المصنفات
طريقة المصنف الشخصي للماكرو


حفظ واستخدام كود VBA في جميع المصنفات

على سبيل المثال، لنفترض أنك تريد أن تكون قادرًا على تحويل الأرقام إلى كلماتها المكافئة باللغة الإنجليزية باستخدام كود VBA مخصص وأن تضمن أن تكون هذه الميزة دائمًا متاحة بغض النظر عن المصنف الذي تعمل عليه. باستخدام النهج الصحيح، يمكنك حفظ وحدات VBA الخاصة بك بحيث يمكن إعادة استخدامها كلما احتجت إليها في Excel. هذا مفيد بشكل خاص لوظائف أو أتمتة مخصصة تريد أن تكون متاحة دائمًا دون تكرار الكود في ملفات متعددة.

للقيام بذلك، يمكنك تعبئة كود VBA الخاص بك كإضافة مخصصة لـ Excel. يمكن تمكين هذه الإضافة في Excel وستعرض وظيفتك المخصصة كدالة متاحة عالميًا.

اتبع الخطوات التالية:

1. اضغط على Alt + F11 في Excel لفتح نافذة "Microsoft Visual Basic for Applications".

2. في محرر VBA، انقر فوق إدراج > وحدة والصق الماكرو التالي في نافذة الوحدة التي تم إنشاؤها حديثًا.

كود VBA: تحويل الأرقام إلى كلمات

Function NumberstoWords(ByVal MyNumber)
'Update by ExtendofficeDim xStr As StringDim xFNum As IntegerDim xStrPointDim xStrNumberDim xPoint As StringDim xNumber As StringDim xP() As VariantDim xDPDim xCnt As IntegerDim xResult, xT As StringDim xLen As IntegerOn Error Resume NextxP = Array("", "Thousand ", "Million ", "Billion ", "Trillion ", " ", " ", " ", " ")
xNumber = Trim(Str(MyNumber))
xDP = InStr(xNumber, ".")
xPoint = ""
xStrNumber = ""
If xDP >0 ThenxPoint = " point "
xStr = Mid(xNumber, xDP +1)
xStrPoint = Left(xStr, Len(xNumber) - xDP)
For xFNum =1 To Len(xStrPoint)
xStr = Mid(xStrPoint, xFNum,1)
xPoint = xPoint & GetDigits(xStr) & " "
Next xFNumxNumber = Trim(Left(xNumber, xDP -1))
End IfxCnt =0xResult = ""
xT = ""
xLen =0xLen = Int(Len(Str(xNumber)) /3)
If (Len(Str(xNumber)) Mod3) =0 Then xLen = xLen -1Do While xNumber <> ""
If xLen = xCnt ThenxT = GetHundredsDigits(Right(xNumber,3), False)
ElseIf xCnt =0 ThenxT = GetHundredsDigits(Right(xNumber,3), True)
ElsexT = GetHundredsDigits(Right(xNumber,3), False)
End IfEnd IfIf xT <> "" ThenxResult = xT & xP(xCnt) & xResultEnd IfIf Len(xNumber) >3 ThenxNumber = Left(xNumber, Len(xNumber) -3)
ElsexNumber = ""
End IfxCnt = xCnt +1LoopxResult = xResult & xPointNumberstoWords = xResultEnd FunctionFunction GetHundredsDigits(xHDgt, xB As Boolean)
Dim xRStr As StringDim xStrNum As StringDim xStr As StringDim xI As IntegerDim xBB As BooleanxStrNum = xHDgtxRStr = ""
On Error Resume NextxBB = TrueIf Val(xStrNum) =0 Then Exit FunctionxStrNum = Right("000" & xStrNum,3)
xStr = Mid(xStrNum,1,1)
If xStr <> "0" ThenxRStr = GetDigits(Mid(xStrNum,1,1)) & "Hundred "
ElseIf xB ThenxRStr = "and "
xBB = FalseElsexRStr = " "
xBB = FalseEnd IfEnd IfIf Mid(xStrNum,2,2) <> "00" ThenxRStr = xRStr & GetTenDigits(Mid(xStrNum,2,2), xBB)
End IfGetHundredsDigits = xRStrEnd FunctionFunction GetTenDigits(xTDgt, xB As Boolean)
Dim xStr As StringDim xI As IntegerDim xArr_1() As VariantDim xArr_2() As VariantDim xT As BooleanxArr_1 = Array("Ten ", "Eleven ", "Twelve ", "Thirteen ", "Fourteen ", "Fifteen ", "Sixteen ", "Seventeen ", "Eighteen ", "Nineteen ")
xArr_2 = Array("", "", "Twenty ", "Thirty ", "Forty ", "Fifty ", "Sixty ", "Seventy ", "Eighty ", "Ninety ")
xStr = ""
xT = TrueOn Error Resume NextIf Val(Left(xTDgt,1)) =1 ThenxI = Val(Right(xTDgt,1))
If xB Then xStr = "and "
xStr = xStr & xArr_1(xI)
ElsexI = Val(Left(xTDgt,1))
If Val(Left(xTDgt,1)) >1 ThenIf xB Then xStr = "and "
xStr = xStr & xArr_2(Val(Left(xTDgt,1)))
xT = FalseEnd IfIf xStr = "" ThenIf xB ThenxStr = "and "
End IfEnd IfIf Right(xTDgt,1) <> "0" ThenxStr = xStr & GetDigits(Right(xTDgt,1))
End IfEnd IfGetTenDigits = xStrEnd FunctionFunction GetDigits(xDgt)
Dim xStr As StringDim xArr_1() As VariantxArr_1 = Array("Zero ", "One ", "Two ", "Three ", "Four ", "Five ", "Six ", "Seven ", "Eight ", "Nine ")
xStr = ""
On Error Resume NextxStr = xArr_1(Val(xDgt))
GetDigits = xStrEnd Function

3. الآن، انقر فوق أيقونة "حفظ" الموجودة في الزاوية العلوية اليسرى من النافذة أو اضغط ببساطة على Ctrl + S لفتح مربع الحوار "حفظ باسم".
A screenshot showing the Save option in the VBA window

4. داخل نافذة "حفظ باسم"، أدخل اسم الملف المطلوب في حقل "اسم الملف". بالنسبة لقائمة "حفظ باسم" المنسدلة، تأكد من اختيار إضافة Excel (*.xlam).
A screenshot showing the Save As dialog box with the selection of Excel Add-in (*.xlam) as the save type

5. انقر فوق زر "حفظ" لتخزين المصنف الخاص بك كملف إضافة Excel. هذا ينشئ إضافة قابلة لإعادة الاستخدام يمكن تمكينها في أي وقت لأي مصنف.
A screenshot showing the workbook saved as an Excel Add-in

6. بمجرد الحفظ، عد إلى Excel وأغلق المصنف الذي قمت للتو بتحويله إلى إضافة.

7. افتح مصنفًا جديدًا أو موجودًا حيث تريد استخدام الماكرو الخاص بك. أدخل الصيغة المخصصة في الخلية المناسبة (على سبيل المثال، في الخلية B2):

=NumberstoWords(A2)
ملاحظة: قد تظهر رسالة خطأ "#NAME?" في هذه المرحلة. هذا أمر متوقع لأن الإضافة التي تحتوي على دالة الماكرو لم يتم تحميلها بعد عالميًا في Excel. اتبع الخطوات التالية لتمكين الماكرو الخاص بك عبر جميع المصنفات.
A screenshot of the #NAME? error before applying the saved VBA macro

8. انتقل إلى Developer التبويب وانقر فوق الزر إضافات Excel في مجموعة الإضافات.
A screenshot showing the Add-ins option under the Developer tab in Excel

9. في مربع الحوار الإضافات الذي يظهر، حدد تصفح.
A screenshot of the Add-ins dialog box in Excel

10. حدد موقع واختر ملف الإضافة الذي قمت بحفظه مسبقًا، ثم انقر موافق.
A screenshot showing the selection of a custom Add-in file in Excel

11. يجب أن يظهر الآن الإضافة المخصصة الخاصة بك، مثل "إضافة تحويل الأرقام إلى كلمات"، في قائمة الإضافات. تأكد من أنها محددة وانقر موافق لتمكينها.
A screenshot showing the custom add-in the Add-ins dialog box in Excel

12. الآن، أدخل الدالة المخصصة مرة أخرى في الخلية المستهدفة (مثل الخلية B2) واضغط Enter. يجب أن ترى الصيغة تعيد الكلمات الإنجليزية الصحيحة المقابلة للرقم.

=NumberstoWords(A2)

13. لتطبيق صيغة التحويل بسرعة على أرقام متعددة، اسحب مقبض التعبئة التلقائية للخلية إلى الأسفل لنسخ الدالة إلى الخلايا الأخرى.

A screenshot showing the final result of the converted numbers to words

نصائح وملاحظات:

  • حفظ الماكرو الخاص بك كإضافة يتيح لك استخدام نفس الوظائف المخصصة، الكود، أو الأتمتة عبر جميع المصنفات الخاصة بك، مما يوفر الوقت ويحسن الاتساق.
  • إذا تم إغلاق Excel أو تم تعطيل الإضافة لاحقًا، قد تظهر وظائف الإضافة مؤقتًا "#NAME?" حتى يتم تحميل الإضافة مرة أخرى. لتجنب الالتباس، تأكد من تمكين الإضافة دائمًا في مدير الإضافات عند الحاجة.
  • قد لا يرى بعض المستخدمين شريط Developer افتراضيًا. لتمكينه، انقر بزر الماوس الأيمن فوق الشريط، واختر "Customize the Ribbon"، وحدد خيار "Developer".
  • من الجيد تخزين الإضافات في مجلد دائم لتجنب فقدان المراجع إذا تم نقل الملفات أو إعادة تسميتها.

إذا كنت تفضل تشغيل الكود يدويًا، فهذا أيضًا ممكن وأحيانًا يكون مفيدًا أثناء تصحيح الأخطاء أو للاستخدام المؤقت:

  1. يمكنك تعيين ماكرو إلى شريط أدوات الوصول السريع لتنفيذ بنقرة واحدة في أي مصنف مرئي. للقيام بذلك، انقر بزر الماوس الأيمن على شريط أدوات الوصول السريع، حدد "Customize Quick Access Toolbar"، ثم أضف الماكرو الخاص بك.
    A screenshot showing how to add the VBA macro to the Quick Access Toolbar
  2. يمكنك أيضًا الضغط على Alt + F11 لفتح محرر VBA، وتحديد الماكرو الخاص بك يدويًا، والضغط على F5 لتشغيل الكود عند الحاجة.

الإيجابيات: هذه الحلول تتيح لك إنشاء ومشاركة وظائف ماكرو غنية وقابلة لإعادة الاستخدام تعمل دائمًا طالما تم تمكين الإضافة.
السلبيات: يجب على المستخدمين تذكر تحميل الإضافة وإذا كنت ستشارك المصنفات، عليك أيضًا مشاركة ملف الإضافة وتفاصيل الوظيفة. أيضًا، لا يمكن استخدام الإضافات في Excel Online.


طريقة المصنف الشخصي للماكرو

طريقة عملية للغاية أخرى لضمان أن الماكرو المفضل لديك أو الأكثر استخدامًا جاهز في كل جلسة Excel، بغض النظر عن المصنف المفتوح، هي استخدام المصنف الشخصي للماكرو (PERSONAL.XLSB). هذا ملف Excel مخفي خاص يتم تحميله تلقائيًا في كل مرة يتم فيها تشغيل Excel، مما يسمح بأي ماكرو مخزن بداخله بأن يكون متاحًا عبر جميع المصنفات المفتوحة.

السيناريوهات القابلة للتطبيق: مثالية للأتمتة الشخصية، سكريبتات التنسيق الروتينية، أو وظائف المرافق التي لا تحتاج إلى مشاركتها كإضافات Excel رسمية. ماكرو في PERSONAL.XLSB متاح على جهاز الكمبيوتر الخاص بك بغض النظر عن الملف المفتوح.

الإيجابيات: ماكرو متاح عالميًا لملف تعريف Excel المحلي الخاص بك ولا يتطلب تثبيت الإضافات أو الملفات الإضافية.
السلبيات: ماكرو المخزن بهذه الطريقة قابل للاستخدام فقط على جهاز الكمبيوتر والحساب حيث يوجد PERSONAL.XLSB. المشاركة مع الآخرين تتطلب تصدير واستيراد الوحدات يدويًا.

  • للاستخدام هذه الطريقة، تحتاج أولاً إلى تسجيل أو إنشاء ماكرو وتأكد من حفظه إلى المصنف الشخصي للماكرو.

اتبع الخطوات التالية:

  1. افتح Excel. على علامة التبويب View، انقر فوق Macros ومن ثم Record Macro.
  2. في مربع الحوار، أسفل "Store macro in"، حدد Personal Macro Workbook. أكمل التسجيل (يمكنك التوقف على الفور إذا لم يكن هناك حاجة لذلك).
  3. اضغط على Alt + F11 لدخول إلى محرر VBA حيث سترى مشروعًا لـ PERSONAL.XLSB. هنا، أدخل وحدة جديدة أو الصق كود الماكرو المطلوب.
  4. احفظ التغييرات الخاصة بك. يقوم Excel بإنشاء وصيانة المصنف PERSONAL.XLSB تلقائيًا في مجلد بدء التشغيل الخاص به.
  5. يمكن تشغيل ماكرو في PERSONAL.XLSB عبر مربع حوار Macros (Alt + F8)، تعيينها إلى أزرار الشريط أو شريط الأدوات، أو استدعاؤها من VBA.

استكشاف الأخطاء وإصلاحها والصيانة: إذا لم تكن ماكرو في PERSONAL.XLSB متاحة، تحقق مما إذا كان Excel يعمل في وضع الأمان أو إذا كانت إعدادات أمان الماكرو مضبوطة على “تعطيل جميع الماكرو”. بالإضافة إلى ذلك، يتم إخفاء PERSONAL.XLSB افتراضيًا؛ إذا أغلقت بدون حفظ أو حذفه عن طريق الخطأ، قد تحتاج إلى إعادة تسجيل ماكرو لإعادة إنشائه.

نصيحة: قم بعمل نسخة احتياطية من ملف PERSONAL.XLSB بانتظام. يمكنك العثور عليه في مجلد ملف التعريف الخاص بالنظام، عادة:
C:\Users\[YourUserName]\AppData\Roaming\Microsoft\Excel\XLSTART\PERSONAL.XLSB

عمليات أخرى (مقالات)

رمز VBA لسرد جميع الإضافات في Excel
في Excel، قد تضيف أو تدرج بعض الإضافات للتعامل بشكل أفضل مع البيانات. كما نعلم، يمكننا الذهاب إلى نافذة الخيارات لعرض جميع الإضافات، ولكن هل هناك طريقة لسرد جميع الإضافات في ورقة؟ الآن، في هذا البرنامج التعليمي، يوفر رمز VBA لسرد جميع الإضافات في Excel.

كيفية تشغيل ماكرو VBA عند فتح أو إغلاق المصنف؟
في هذه المقالة، سأخبرك كيفية تشغيل رمز VBA أثناء فتح أو إغلاق المصنف في كل مرة.

كيفية حماية / قفل كود VBA في Excel؟
تمامًا كما يمكنك استخدام كلمة المرور لحماية المصنفات وأوراق العمل، يمكنك أيضًا تعيين كلمة مرور لحماية الماكرو في Excel.

كيفية استخدام تأخير زمني بعد تشغيل ماكرو VBA في Excel؟
في بعض الحالات، قد تحتاج إلى إنشاء تأخير زمني لتشغيل ماكرو VBA في Excel. على سبيل المثال، عند النقر لتشغيل ماكرو محدد، فإنه سيصبح فعالاً بعد 10 ثوانٍ. ستشير هذه المقالة إلى طريقة لتحقيق ذلك.

أفضل أدوات زيادة الإنتاجية لمجموعة Office

🤖 Kutools AI Aide: أحدث ثورة في تحليل البيانات بفضل: التنفيذ الذكي|توليد الشيفرة|إنشاء الصيغ المخصصة|تحليل البيانات وتوليد الرسوم البيانية|استدعاء الوظائف المحسنة
الميزات الشائعة: إيجاد أو تمييز أو وضع علامة على المكررات|حذف الصفوف الفارغة|دمج الأعمدة أو الخلايا دون فقدان البيانات|تقريب...
بحث متقدم: بحث V بمعايير متعددة|بحث V بقيم متعددة|بحث في عدة ورقات|مطابقة غامضة ....
قائمة منسدلة متقدمة: أنشئ قائمة منسدلة بسرعة|قائمة منسدلة معتمدة|قائمة منسدلة متعددة الاختيار ....
إدارة الأعمدة: إضافة عدد معين من الأعمدة |نقل الأعمدة |تغيير حالة إظهار/إخفاء الأعمدة المخفية| مقارنة النطاقات و الأعمدة ...
ميزات مميزة: التركيز على الشبكة|عرض التصميم|شريط الصيغ المحسن|إدارة أدوات المصنف وورقة العمل|مكتبة النص التلقائي (Auto Text)|منتقي التاريخ|دمج البيانات |تشفير/فك تشفير الخلايا|إرسال البريد الإلكتروني حسب القائمة|مرشح متقدم|تصفية خاصة (تصفية الخلايا التي تحتوي على خط عريض أو مائل أو يتوسطه خط...) ...
أفضل15 مجموعة أدوات:12 أداة نصية (إضافة نص، حذف الأحرف المحددة، ... )|أكثر من50 نوعاً من الرسوم البيانية (مخطط جانت، ...)|أكثر من40 صيغة عملية (حساب العمر بناءً على تاريخ الميلاد، ...)|19 أداة إدراج (إدراج رمز الاستجابة السريعة، إدراج صورة من المسار، ... )|12 أداة تحويل (تحويل إلى كلمات، تحويل العملة، ...)|7 أدوات دمج و تقسيم (دمج متقدم للصفوف، تقسيم الخلايا، ...)|... والمزيد
استخدم Kutools بلغتك المفضلة – يدعم الإنجليزية، الإسبانية، الألمانية، الفرنسية، الصينية، وأكثر من40 لغة أخرى!

عزز مهاراتك في Excel مع Kutools لـ Excel، وتمتع بكفاءة غير مسبوقة. يقدم Kutools لـ Excel أكثر من300 ميزة متقدمة لتعزيز الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...


Office Tab يجلب تجربة التبويبات إلى Office، ويجعل عملك أسهل بكثير

  • فعّل تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint
  • افتح وأنشئ مستندات متعددة في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ جديدة.
  • يمنحك زيادة إنتاجية تصل إلى50% ويوفر عليك مئات النقرات يومياً!