استخراج كود VBA من مستندات Word 2007: دليل شامل
عند العمل مع مستندات Word 2007، قد تجد نفسك في موقف تحتاج فيه إلى استخلاص كود VBA (Visual Basic for Applications) من ملف .docm
برمجياً. قد تتضمن السيناريوهات الشائعة الرغبة في إعادة استخدام هذا الكود أو تعديله في مستندات أو تطبيقات أخرى. إليك دليل شامل لمساعدتك في هذه العملية.
المشكلة: استخراج كود VBA
قد تكون مرتاحاً لإدراج وإزالة الكود داخل مستند Word، ولكن استخراج كود VBA الفعلي إلى تنسيق قابل للاستخدام يمكن أن يكون معقداً. الخبر السار هو أنه من الممكن تحقيق هذه المهمة، وسيرشدك هذا الدليل عبر الخطوات اللازمة.
حل خطوة بخطوة
1. إعداد بيئتك
قبل أن تتمكن من استخراج كود VBA، تحتاج إلى التأكد من أن بيئتك تم إعدادها بشكل صحيح:
-
إضافة مرجع: تأكد من إضافة مرجع إلى Microsoft Visual Basic for Applications Extensibility 5.3. هذا أمر أساسي للتفاعل مع مكونات VBA في مستندات Word الخاصة بك.
-
تمكين الوصول إلى نموذج كائن VBA: انتقل إلى مركز الثقة في خيارات Word وقم بتمكين الوصول إلى نموذج كائن VBA. هذا أمر حاسم لتفاعل تطبيقك مع مشروع VBA في Word.
2. استخراج الكود
الآن، دعونا نغوص في الكود الذي يسمح لك باستخراج كود VBA. أدناه هو تنفيذ بلغة C# لاستخراج كل الماكرو من ملف .docm
.
using Microsoft.Office.Interop.Word;
using Microsoft.Vbe.Interop;
using System.Collections.Generic;
public List<string> GetMacrosFromDoc()
{
Document doc = GetWordDoc(@"C:\Temp\test.docm");
List<string> macros = new List<string>();
VBProject prj;
CodeModule code;
string composedFile;
prj = doc.VBProject;
foreach (VBComponent comp in prj.VBComponents)
{
code = comp.CodeModule;
// إضافة اسم الوحدة البرمجية
composedFile = comp.Name + Environment.NewLine;
// تكرار عبر سطور الوحدة البرمجية
for (int i = 0; i < code.CountOfLines; i++)
{
composedFile += code.get_Lines(i + 1, 1) + Environment.NewLine;
}
// تخزين الماكرو في القائمة
macros.Add(composedFile);
}
CloseDoc(doc);
return macros;
}
3. فهم الكود
-
تهيئة القائمة: الكود يقوم بتهيئة قائمة للإمساك بالماكرو المستخلصة.
-
الوصول إلى المستند: تُستخدم دالة
GetWordDoc
للوصول إلى مستند Word معين. -
التكرار عبر المكونات: يقوم الكود بالتكرار عبر كل
VBComponent
فيVBProject
الخاص بالمستند، جامعاً سطور الكود. -
تخزين الكود: يقوم بدمج اسم كل مكون وسطره ويخزنه في قائمة للاستخدام لاحقاً.
4. عرض الكود المستخلص
قد ترغب في عرض الكود المستخلص أو تخزينه للاستخدام في المستقبل. يمكنك استخدام صناديق الرسائل أو كتابته في مستند جديد، اعتماداً على كيفية تخطيطك لاستخدام الكود المستخلص.
Sub GetCode()
Dim prj As VBProject
Dim comp As VBComponent
Dim code As CodeModule
Dim composedFile As String
Dim i As Integer
Set prj = ThisDocument.VBProject
For Each comp In prj.VBComponents
Set code = comp.CodeModule
composedFile = comp.Name & vbNewLine
For i = 1 To code.CountOfLines
composedFile = composedFile & code.Lines(i, 1) & vbNewLine
Next
MsgBox composedFile
Next
End Sub
هذا التنفيذ بلغة VBA يعكس بشكل أساسي منطق C# لكنه يعمل مباشرة داخل مستند Word.
الخاتمة
يمكن أن يبدو استخراج كود VBA من مستندات Word 2007 شاقًا في البداية، لكن مع الخطوات الصحيحة، يصبح من السهل التعامل معه. باتباع الخطوات الموضحة أعلاه، يمكنك الوصول بفعالية وإعادة استخدام ماكرو VBA حسب الحاجة. تذكر دائماً التأكد من إعداد بيئة تطويرك بشكل صحيح، ولا تتردد في استكشاف المزيد من قدرات كل من نموذج كائن Word وVBA نفسه.
إذا كانت لديك أي استفسارات أو تحتاج إلى مزيد من المساعدة، فلا تتردد في التواصل!