كيفية حفظ واستخدام وحدات 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 افتراضيًا. لتمكينه، انقر بزر الماوس الأيمن فوق الشريط، واختر "Customize the Ribbon"، وحدد خيار "Developer".
- من الجيد تخزين الإضافات في مجلد دائم لتجنب فقدان المراجع إذا تم نقل الملفات أو إعادة تسميتها.
إذا كنت تفضل تشغيل الكود يدويًا، فهذا أيضًا ممكن وأحيانًا يكون مفيدًا أثناء تصحيح الأخطاء أو للاستخدام المؤقت:
- يمكنك تعيين ماكرو إلى شريط أدوات الوصول السريع لتنفيذ بنقرة واحدة في أي مصنف مرئي. للقيام بذلك، انقر بزر الماوس الأيمن على شريط أدوات الوصول السريع، حدد "Customize Quick Access Toolbar"، ثم أضف الماكرو الخاص بك.
- يمكنك أيضًا الضغط على Alt + F11 لفتح محرر VBA، وتحديد الماكرو الخاص بك يدويًا، والضغط على F5 لتشغيل الكود عند الحاجة.
الإيجابيات: هذه الحلول تتيح لك إنشاء ومشاركة وظائف ماكرو غنية وقابلة لإعادة الاستخدام تعمل دائمًا طالما تم تمكين الإضافة.
السلبيات: يجب على المستخدمين تذكر تحميل الإضافة وإذا كنت ستشارك المصنفات، عليك أيضًا مشاركة ملف الإضافة وتفاصيل الوظيفة. أيضًا، لا يمكن استخدام الإضافات في Excel Online.
طريقة عملية للغاية أخرى لضمان أن الماكرو المفضل لديك أو الأكثر استخدامًا جاهز في كل جلسة Excel، بغض النظر عن المصنف المفتوح، هي استخدام المصنف الشخصي للماكرو (PERSONAL.XLSB). هذا ملف Excel مخفي خاص يتم تحميله تلقائيًا في كل مرة يتم فيها تشغيل Excel، مما يسمح بأي ماكرو مخزن بداخله بأن يكون متاحًا عبر جميع المصنفات المفتوحة.
السيناريوهات القابلة للتطبيق: مثالية للأتمتة الشخصية، سكريبتات التنسيق الروتينية، أو وظائف المرافق التي لا تحتاج إلى مشاركتها كإضافات Excel رسمية. ماكرو في PERSONAL.XLSB متاح على جهاز الكمبيوتر الخاص بك بغض النظر عن الملف المفتوح.
الإيجابيات: ماكرو متاح عالميًا لملف تعريف Excel المحلي الخاص بك ولا يتطلب تثبيت الإضافات أو الملفات الإضافية.
السلبيات: ماكرو المخزن بهذه الطريقة قابل للاستخدام فقط على جهاز الكمبيوتر والحساب حيث يوجد PERSONAL.XLSB. المشاركة مع الآخرين تتطلب تصدير واستيراد الوحدات يدويًا.
- للاستخدام هذه الطريقة، تحتاج أولاً إلى تسجيل أو إنشاء ماكرو وتأكد من حفظه إلى المصنف الشخصي للماكرو.
اتبع الخطوات التالية:
- افتح Excel. على علامة التبويب View، انقر فوق Macros ومن ثم Record Macro.
- في مربع الحوار، أسفل "Store macro in"، حدد Personal Macro Workbook. أكمل التسجيل (يمكنك التوقف على الفور إذا لم يكن هناك حاجة لذلك).
- اضغط على Alt + F11 لدخول إلى محرر VBA حيث سترى مشروعًا لـ PERSONAL.XLSB. هنا، أدخل وحدة جديدة أو الصق كود الماكرو المطلوب.
- احفظ التغييرات الخاصة بك. يقوم Excel بإنشاء وصيانة المصنف PERSONAL.XLSB تلقائيًا في مجلد بدء التشغيل الخاص به.
- يمكن تشغيل ماكرو في PERSONAL.XLSB عبر مربع حوار Macros (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. على سبيل المثال، عند النقر لتشغيل ماكرو محدد، فإنه سيصبح فعالاً بعد 10 ثوانٍ. ستشير هذه المقالة إلى طريقة لتحقيق ذلك.
أفضل أدوات زيادة الإنتاجية لمجموعة Office
عزز مهاراتك في Excel مع Kutools لـ Excel، وتمتع بكفاءة غير مسبوقة. يقدم Kutools لـ Excel أكثر من300 ميزة متقدمة لتعزيز الإنتاجية وتوفير وقت الحفظ. انقر هنا للحصول على الميزة التي تحتاجها أكثر...
Office Tab يجلب تجربة التبويبات إلى Office، ويجعل عملك أسهل بكثير
- فعّل تحرير وقراءة المستندات عبر التبويبات في Word وExcel وPowerPoint
- افتح وأنشئ مستندات متعددة في تبويبات جديدة ضمن نفس النافذة، بدلاً من فتحها في نوافذ جديدة.
- يمنحك زيادة إنتاجية تصل إلى50% ويوفر عليك مئات النقرات يومياً!