كيفية حفظ واستخدام ماكرو VBA الخاص بك في جميع المصنفات في Excel؟
هناك العديد من الحالات التي قد تحتاج فيها إلى استخدام نفس ماكرو VBA بشكل متكرر في مصنفات Excel مختلفة لأغراض مثل أتمتة العمليات الحسابية المتكررة، تنسيق البيانات، أو الوظائف المخصصة مثل تحويل الأرقام إلى كلمات. التحدي الشائع هو أنه افتراضيًا، يتم تخزين الماكرو فقط داخل المصنف الذي تم إنشاؤه فيه، مما يعني أنك لا تستطيع الوصول إليه أو إعادة استخدامه بسهولة في مستندات جديدة. ومع ذلك، يوفر Excel عدة طرق مرنة لجعل ماكرو VBA متاحًا عالميًا، مما يلغي الحاجة إلى إعادة نسخ الكود كلما بدأت مصنفًا جديدًا. يقدم هذا البرنامج التعليمي تعليمات شاملة حول أساليب مختلفة لضمان سهولة الوصول إلى ماكرو 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 لفتح مربع حوار "حفظ باسم".
4. داخل نافذة "حفظ باسم"، أدخل اسم الملف المطلوب في حقل "اسم الملف". بالنسبة إلى قائمة "تحديد نوع الحفظ"، تأكد من اختيار إضافة Excel (*.xlam).
5. انقر فوق زر "حفظ" لتخزين المصنف كملف إضافة Excel. هذا ينشئ إضافة قابلة لإعادة الاستخدام يمكن تفعيلها في أي وقت لأي مصنف.
6. بمجرد الحفظ، عد إلى Excel وأغلق المصنف الذي حولته للتو إلى إضافة.
7. افتح مصنفًا جديدًا أو موجودًا حيث تريد استخدام الماكرو الخاص بك. أدخل الصيغة المخصصة في الخلية المناسبة (على سبيل المثال، في B2):
=NumberstoWords(A2)

8. انتقل إلى Developer التبويب وانقر على الزر إضافات Excel في مجموعة الإضافات.
9. في مربع الحوار "الإضافات" الذي يظهر، حدد تصفح.
10. حدد موقع الإضافة التي قمت بحفظها مسبقًا، ثم انقر موافق.
11. يجب أن تظهر الآن إضافة مخصصة مثل "تحويل الرقم إلى الكلمات إضافة" في قائمة الإضافات. تأكد من أنها محددة وانقر موافق لتفعيلها.
12. الآن، أدخل الوظيفة المخصصة مرة أخرى في الخلية المستهدفة (مثل B2) واضغط Enter. يجب أن ترى الصيغة تعيد الكلمات الإنجليزية الصحيحة للرقم.
=NumberstoWords(A2)
13. لتطبيق صيغة التحويل بسرعة على أرقام متعددة، اسحب مقبض التعبئة التلقائية للخلية لأسفل لنسخ الوظيفة إلى خلايا أخرى.

نصائح وملاحظات:
- يتيح لك حفظ الماكرو الخاص بك كإضافة استخدام نفس الوظائف المخصصة أو الأكواد أو عملية الأتمتة عبر جميع المصنفات، مما يوفر الوقت ويحسن التناسق.
- إذا تم إغلاق Excel أو تم تعطيل الإضافة لاحقًا، فقد تظهر وظائف الإضافة مؤقتًا "#NAME?" حتى يتم إعادة تحميل الإضافة. لتجنب الارتباك، تأكد من تمكين الإضافة دائمًا في مدير الإضافات عند الحاجة.
- قد لا يرى بعض المستخدمين تبويب Developer بشكل افتراضي. لتمكينه، انقر بزر الماوس الأيمن على الشريط، واختر "تخصيص الشريط"، ثم حدد الخيار "Developer".
- من الجيد تخزين الإضافات في مجلد دائم لتجنب فقدان المراجع إذا تم نقل الملفات أو إعادة تسميتها.
إذا كنت تفضل تشغيل الكود يدويًا، فهذا أيضًا ممكن وأحيانًا يكون مفيدًا أثناء تصحيح الأخطاء أو للاستخدام المؤقت:
- يمكنك تعيين ماكرو إلى شريط أدوات الوصول السريع لتنفيذ بنقرة واحدة في أي مصنف مرئي. للقيام بذلك، انقر بزر الماوس الأيمن على شريط أدوات الوصول السريع، حدد "تخصيص شريط أدوات الوصول السريع"، ثم أضف ماكروك.
- يمكنك أيضًا الضغط على Alt + F11 لفتح محرر VBA، وتحديد ماكروك يدويًا، والضغط على F5 لتشغيل الكود عند الحاجة.
مزايا: توفر هذه الحلول إمكانية إنشاء ومشاركة وظائف ماكرو غنية وقابلة لإعادة الاستخدام والتي تعمل دائمًا طالما كانت الإضافة مفعلة.
عيوب: يجب على المستخدمين تذكر تحميل الإضافة، وإذا كانوا يشاركون المصنفات، يجب أيضًا مشاركة ملف الإضافة وتفاصيل الوظيفة. بالإضافة إلى ذلك، لا يمكن استخدام الإضافات في Excel عبر الإنترنت.
طريقة عملية للغاية أخرى لضمان أن الماكرو المفضل لديك أو الأكثر استخدامًا جاهز في كل جلسة Excel، بغض النظر عن المصنف المفتوح، هي استخدام مصنف الماكرو الشخصي (PERSONAL.XLSB). هذا ملف Excel مخفي خاص يقوم بتحميل نفسه تلقائيًا في كل مرة يتم فيها فتح Excel، مما يسمح بأي ماكرو مخزن بداخله بأن يكون متاحًا عبر جميع المصنفات المفتوحة.
السيناريوهات القابلة للتطبيق: مثالية للأتمتة الشخصية، سكريبتات التنسيق الروتينية، أو وظائف المرافق التي لا تحتاج إلى مشاركتها كإضافات Excel رسمية. ماكروهات PERSONAL.XLSB متاحة على جهاز الكمبيوتر الخاص بك بغض النظر عن الملف المفتوح.
مزايا: ماكروهات متاحة عالميًا لملف تعريف Excel المحلي الخاص بك ولا تتطلب تثبيت إضافات أو ملفات إضافية.
عيوب: الماكروهات المخزنة بهذه الطريقة قابلة للاستخدام فقط على جهاز الكمبيوتر والحساب الذي يوجد فيه PERSONAL.XLSB. يتطلب المشاركة مع الآخرين تصدير واستيراد الوحدات يدويًا.
- للاستفادة من هذه الطريقة، تحتاج أولاً إلى تسجيل أو إنشاء ماكرو وتأكد من حفظه في مصنف الماكرو الشخصي.
اتبع الخطوات التالية:
- افتح Excel. في تبويب العرض، انقر على ماكروهات ثم ابدأ تسجيل ماكرو.
- في مربع الحوار، ضمن "تخزين الماكرو في", حدد مصنف الماكرو الشخصي. أكمل التسجيل (يمكنك إيقاف التسجيل على الفور إذا لم يكن هناك حاجة لذلك).
- اضغط على Alt + F11 لدخول إلى محرر VBA حيث سترى مشروع لـ PERSONAL.XLSB. هنا، أدخل وحدة جديدة أو ألصق كود الماكرو المطلوب.
- احفظ التغييرات الخاصة بك. يقوم Excel بإنشاء وصيانة مصنف PERSONAL.XLSB تلقائيًا في مجلد بدء التشغيل الخاص به.
- يمكن تشغيل ماكروهات في PERSONAL.XLSB عبر مربع حوار الماكروهات (Alt + F8)، تعيينها لأزرار الشريط أو أشرطة الأدوات، أو استدعاؤها من VBA.
استكشاف الأخطاء وإصلاحها والصيانة: إذا لم تكن ماكروهات في PERSONAL.XLSB متاحة، تحقق مما إذا كان Excel يعمل في وضع الأمان أو إذا كانت إعدادات أمان الماكرو مُعدة على “تعطيل جميع الماكروهات”. بالإضافة إلى ذلك، يتم إخفاء 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. على سبيل المثال، عند النقر لتشغيل ماكرو محدد، فإنه سيأخذ تأثيراً بعد ١٠ ثوانٍ. ستوضح لك هذه المقالة طريقة لتحقيق ذلك.
أفضل أدوات الإنتاجية لمكتب العمل
عزز مهاراتك في Excel مع Kutools لـ Excel، واختبر الكفاءة كما لم يحدث من قبل. Kutools لـ Excel يقدم أكثر من300 ميزة متقدمة لزيادة الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يقدم واجهة التبويب لـ Office، ويجعل عملك أسهل بكثير
- تمكين تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint.
- افتح وأنشئ عدة مستندات في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ منفصلة.
- يزيد إنتاجيتك بنسبة50%، ويقلل مئات النقرات بالماوس يومياً!