كيفية إدراج جدول Excel في Word مع VBA
مايكروسوفت أوفيس مايكروسوفت وورد مايكروسوفت مايكروسوفت اكسل بطل كلمة / / April 29, 2020
تاريخ آخر تحديث
VBA هي أداة قوية للغاية يمكنك استخدامها لأتمتة الكثير من العمل بين تطبيقات Microsoft Office المتعددة. أحد الأنشطة الشائعة التي يمكنك أتمتتها باستخدام VBA هو إدراج جدول Excel في مستند Word.
Visual Basic for Applications (VBA) هي أداة قوية جدًا يمكنك استخدامها لأتمتة الكثير من العمل بين تطبيقات Microsoft Office المتعددة. أحد الأنشطة الشائعة التي يمكنك أتمتتها باستخدام VBA هو إدراج جدول Excel في مستند Word.
هناك نوعان من الطرق التي يمكنك القيام بذلك. الأول هو أتمتة نسخة ولصق مستقيمة من نطاق موجود من Excel إلى جدول جديد في مستند Word. والثاني هو إجراء العمليات الحسابية في Excel ، وإنشاء جدول جديد في Word ، وكتابة النتائج إلى الجدول.
يمكنك أن تحاول تسجيل ماكرو للقيام بذلك ، ولكن وحدات الماكرو ستسمح لك فقط بأتمتة المهام داخل Word. في هذه المقالة ، ستتعلم كيفية كتابة كود VBA لأتمتة هذه الإجراءات بين Excel و Word.
نسخ ولصق نطاق Excel في Word مع VBA
في كلا المثالين ، سنبدأ بعينة من جدول بيانات Excel. هذه العينة هي قائمة بأوامر الشراء لمجموعة متنوعة من المنتجات.
لنفترض أنك تريد نسخ ولصق نطاق الخلايا بالكامل في ورقة العمل هذه في مستند Word. للقيام بذلك ، ستحتاج إلى كتابة دالة VBA يتم تشغيلها عند النقر فوق الزر "نسخ إلى Word".
تحديد مطور من القائمة وحدد إدراج من مجموعة عناصر التحكم في الشريط. في القائمة المنسدلة ، حدد عنصر تحكم زر تحت عناصر تحكم ActiveX.
بعد ذلك ، ارسم زر الأمر على الجانب الأيمن من الورقة. يمكنك تغيير التسمية التوضيحية إلى "نسخ إلى Word" عن طريق النقر بزر الماوس الأيمن على الزر وتحديده الخصائص. قم بتغيير نص التسمية التوضيحية ، ويمكنك استخدام الخط لتحديث حجم الخط ونمطه.
ملحوظة: إذا كنت لا ترى مطور في قائمة Excel الخاصة بك ، ثم أضفه. تحديد ملف, خيارات, تخصيص الشريطثم اختر جميع الأوامر من القائمة المنسدلة اليسرى. ثم تحرك مطور من الجزء الأيسر إلى اليمين وحدد موافق للإنهاء.
اكتب نسخ ولصق كود فبا
أنت الآن جاهز لبدء كتابة كود VBA. للبدء ، انقر نقرًا مزدوجًا فوق الجديد نسخ إلى Word زر لفتح نافذة محرر التعليمات البرمجية.
يجب أن تشاهد روتين فرعي يسمى Commandbutton1_Click () كما هو موضح أدناه.
ستحتاج إلى نسخ كل قسم من التعليمات البرمجية أدناه. قبل بدء الترميز ، من أجل التحكم في Word على جهاز الكمبيوتر الخاص بك باستخدام VBA ، ستحتاج إلى تمكين مكتبة مراجع Microsoft Word.
في محرر الرمز ، حدد أدوات من القائمة وحدد المراجع. في قائمة المراجع المتاحة ، قم بالتمرير لأسفل وتمكين مكتبة كائنات Microsoft Word 16.0.
حدد موافق ، وستكون جاهزًا لبدء الترميز. سنستعرض كل قسم من التعليمات البرمجية في كل مرة حتى تفهم ما يفعله هذا الرمز ولماذا.
أولاً ، تحتاج إلى إنشاء المتغيرات والكائنات التي ستحتفظ بالنطاق وتسمح لك بالتحكم في تطبيق Word.
خافت tblRange مثل Excel. نطاق
خافت WordApp على شكل كلمة. تطبيق
خافت WordDoc على شكل كلمة. المستند
خافت WordTable ككلمة. الطاولة
يحدد السطر التالي من التعليمات البرمجية نطاقًا معينًا من الخلايا ويحفظه في كائن Excel Range في VBA.
Set tblRange = ThisWorkbook. أوراق العمل ("الورقة 1"). النطاق ("A2: G44")
بعد ذلك ، تريد التحقق مما إذا كان تطبيق Word مفتوحًا بالفعل على جهاز الكمبيوتر. يمكنك الرجوع إلى تطبيق Word باستخدام مرجع "فئة" خاص باستخدام الأمر VBA GetObject لإنجاز ذلك. إذا لم يكن Word مفتوحًا بالفعل ، فسيبدأ السطر التالي في تشغيله باستخدام وظيفة CreateObject. يمنع السطر "On Error Resume Next" أي خطأ من دالة GetObject الأولى (إذا لم يكن Word مفتوحًا بالفعل) من إيقاف تنفيذ السطر التالي في البرنامج.
خطأ في الصفحة، إذهب للتالي
قم بتعيين WordApp = GetObject (class: = "Word. تطبيق")
إذا كان WordApp لا شيء ثم قم بتعيين WordApp = CreateObject (class: = "Word. تطبيق")
الآن بعد تشغيل تطبيق Word ، تريد جعله مرئيًا للمستخدم وتنشيطه للاستخدام.
WordApp. مرئي = صحيح
WordApp. تفعيل
بعد ذلك ، تريد إنشاء مستند جديد داخل تطبيق Word.
تعيين WordDoc = WordApp. مستندات. أضف
أخيرًا ، ستقوم بنسخ ولصق نطاق الخلايا في جدول جديد في مستند Word.
tblRange. نسخ
WordDoc. الفقرات (1). الجدول اللصق
LinkedToExcel: = خطأ ، _
تنسيق WordFormatt = = خطأ ، _
RTF: = خطأ
ستقوم المفاتيح في الوظيفة أعلاه بإدراج جدول غير مرتبط باستخدام تنسيق Excel المصدر (وليس تنسيق Word) وعدم استخدام تنسيق النص المنسق.
أخيرًا ، للتعامل مع نطاقات Excel الأوسع من المستند ، ستحتاج إلى احتواء الجدول الجديد تلقائيًا بحيث يتناسب مع هوامش مستند Word الجديد.
تعيين WordTable = WordDoc. طاولات (1)
WordTable. سلوك تلقائي (wdAutoFitWindow)
والآن انتهيت! احفظ الملف كملف Excel ممكّن للماكرو (ملحق .xlsm). أغلق المحرر ، واحفظ ملف Excel الأصلي مرة أخرى ، ثم انقر فوق زر الأمر لرؤية التعليمات البرمجية في العمل!
اكتب نتائج Excel في جدول Word باستخدام VBA
في هذا القسم التالي ، ستكتب رمز VBA الذي يقوم بإجراء العمليات الحسابية على القيم في Excel ، ويكتبها إلى جدول في Word.
في هذا المثال ، سنقوم بسحب 10 صفوف من البيانات وحسابها وكتابة النتائج إلى جدول في مستند Word. أيضًا ، سيحتوي الجدول الأصلي على أربعة أعمدة ، وسيسحب رمز فبا أول عشرة صفوف من البيانات من هذا النطاق.
كما هو الحال في القسم الأخير ، سنتناول كل قسم في كل مرة حتى تفهم ما يفعله هذا الرمز ولماذا.
أولاً ، أنشئ المتغيرات والكائنات التي ستحتفظ بالبيانات وتسمح لك بالكتابة إلى تطبيق Word.
خافت tblRange مثل Excel. نطاق
خافت WrdRange كالكلمة. نطاق
خافت WordApp على شكل كلمة. تطبيق
خافت WordDoc على شكل كلمة. المستند
خافت WordTable ككلمة. الطاولة
خافت intRows
الأعمدة الخافتة
Dim strDate As String
تعتيم خافت كسلسلة
خافت intUnits كمتغير
خافت intCost كمتغير
Dim intTotal As Variant
بعد ذلك ، قم بتعيين إجمالي الأعمدة والصفوف التي تريد قراءتها من نطاق Excel.
intNoOfRows = 10
intNoOfColumns = 5
كرر نفس رمز القسم الأخير الذي سيفتح Word إذا لم يكن مفتوحًا بالفعل.
خطأ في الصفحة، إذهب للتالي
قم بتعيين WordApp = GetObject (class: = "Word. تطبيق")
إذا كان WordApp لا شيء ثم قم بتعيين WordApp = CreateObject (class: = "Word. تطبيق")
WordApp. مرئي = صحيح
WordApp. تفعيل
تعيين WordDoc = WordApp. مستندات. أضف
تنشئ الأسطر الأربعة التالية جدولًا داخل مستند Word المفتوح حديثًا.
تعيين WrdRange = WordDoc. المدى (0 ، 0)
WordDoc. الجداول. إضافة WrdRange ، intNoOfRows ، intNoOfColumns
تعيين WordTable = WordDoc. طاولات (1)
WordTable. الحدود. تمكين = صحيح
أخيرًا ، ستقوم الحلقة التالية بتنفيذ هذه الإجراءات:
- لكل صف ، ضع تاريخ الطلب والعنصر والوحدات والتكلفة في المتغيرات
- حساب التكلفة مضروبة في الوحدة (إجمالي المبيعات) وتخزينها في متغير
- لكل عمود ، اكتب القيم إلى جدول Word ، بما في ذلك إجمالي المبيعات المحسوبة في الخلية الأخيرة
- انتقل إلى الصف التالي ، وكرر الإجراء أعلاه
إليك ما يبدو عليه هذا الرمز:
For i = 1 to intNoOfRows
بالنسبة لـ j = 1 إلى intNoOfColumns
إذا كانت j = 1 إذن
strDate = tblRange. الخلايا (i + 1، j)
strItem = tblRange. الخلايا (i + 1، j + 1)
intUnits = فال (tblRange. الخلايا (i + 1، j + 2) .القيمة)
intCost = Val (tblRange. الخلايا (i + 1، j + 3) .القيمة)
intTotal = intUnits * intCost
إنهاء إذا
حدد Case j
الحالة = 1
WordTable. الخلية (i ، j). النص = strDate
الحالة = 2
WordTable. الخلية (i ، j). النص = strItem
الحالة = 3
WordTable. الخلية (i ، j). النص = الوحدات
الحالة = 4
WordTable. الخلية (i ، j). نص = intCost
الحالة = 5
WordTable. الخلية (i ، j). النص = intTotal
حالة أخرى
حدد النهاية
التالى
التالى
وظيفة "الخلايا" في الجزء الأول تسحب قيم الخلية خارج Excel. تعني الخلايا (س ، ص) أنها تسحب قيمة الخلية في الصف س والعمود ص.
تكتب وظيفة "الخلية" في الجزء الأخير إلى الخلايا في جدول Word ، باستخدام نفس الصفوف وتعيينات الأعمدة.
بمجرد حفظ رمز VBA هذا وتشغيله ، سترى النتائج في مستند Word الذي تم إنشاؤه حديثًا.
كما ترى ، ليس من الصعب إنشاء بعض الأتمتة المفيدة بين Excel و Word. إنها مسألة فهم كيفية عمل "الكائنات" المختلفة التي يمكنها إنشاء تطبيقات Excel و Word والتحكم فيها على جهاز الكمبيوتر.