Skip to main content

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

Author: Zhoumandy Last Modified: 2025-07-21

هناك العديد من الحالات التي قد تحتاج فيها إلى استخدام نفس ماكرو 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 بشكل افتراضي. لتمكينه، انقر بزر الماوس الأيمن على الشريط، واختر "تخصيص الشريط"، ثم حدد الخيار "Developer".
  • من الجيد تخزين الإضافات في مجلد دائم لتجنب فقدان المراجع إذا تم نقل الملفات أو إعادة تسميتها.

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

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

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


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

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

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

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

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

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

  1. افتح Excel. في تبويب العرض، انقر على ماكروهات ثم ابدأ تسجيل ماكرو.
  2. في مربع الحوار، ضمن "تخزين الماكرو في", حدد مصنف الماكرو الشخصي. أكمل التسجيل (يمكنك إيقاف التسجيل على الفور إذا لم يكن هناك حاجة لذلك).
  3. اضغط على Alt + F11 لدخول إلى محرر VBA حيث سترى مشروع لـ PERSONAL.XLSB. هنا، أدخل وحدة جديدة أو ألصق كود الماكرو المطلوب.
  4. احفظ التغييرات الخاصة بك. يقوم Excel بإنشاء وصيانة مصنف PERSONAL.XLSB تلقائيًا في مجلد بدء التشغيل الخاص به.
  5. يمكن تشغيل ماكروهات في PERSONAL.XLSB عبر مربع حوار الماكروهات (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. على سبيل المثال، عند النقر لتشغيل ماكرو محدد، فإنه سيأخذ تأثيراً بعد ١٠ ثوانٍ. ستوضح لك هذه المقالة طريقة لتحقيق ذلك.

أفضل أدوات الإنتاجية لمكتب العمل

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

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


Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير

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