جدول المحتويات
متى احتجت إلى نسخ نطاق من ورقة إلى ورقة أخرى أو مصنف آخر. هناك أنواع مختلفة من النسخ واللصق. بعد هذه المقالة ، ستتعرف على طرق مختلفة لاستخدام نطاق نسخ Excel VBA إلى ورقة أخرى.
لجعل الشرح حيويًا ، سأستخدم عينة مجموعة بيانات تمثل المعلومات الشخصية لأشخاص معينين . تحتوي مجموعة البيانات على 4 أعمدة. هذه الأعمدة هي الاسم الأول ، الاسم الأخير ، الاسم الكامل ، و البريد الإلكتروني .
تنزيل المصنف للتدريب
VBA Copy Range to Other Sheet.xlsm
8 طرق لـ Excel VBA نسخ النطاق إلى ورقة أخرى
1. نسخ نطاق إلى ورقة أخرى بالتنسيق
متى أردت نسخ نطاق من ورقة إلى ورقة أخرى باستخدام تنسيق ، يمكنك ببساطة القيام بذلك باستخدام VBA .
هنا ، أنسخ نطاقًا من ورقة مجموعة البيانات إلى ورقة WithFormat .
لنبدأ الإجراء ،
أولاً ، افتح علامة التبويب Developer & gt؛ & gt؛ حدد Visual Basic
يمكنك أيضًا استخدام لوحة المفاتيح ALT + F11 لفتح VBA محرر.
بعد ذلك ، سيفتح نافذة جديدة باسم Microsoft Visual Basic for Applications.
من هناك ، افتح Insert & GT ؛ & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الفتح & GT. & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف ينبثق.
الآن ، من اسم الماكرو حدد Copy_Range_BelowLastCell_AnotherSheets أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد الماكرو .
ومن ثم ، نسخ النطاق المحدد و لصقه من الصف الأخير من ورقة أخرى .
8. انسخ VBA نطاقًا إلى الصف الأخير من مصنف آخر
إذا كنت تريد نسخ نطاق إلى الصف الأخير من ورقة مصنف أخرى ، يمكنك أيضًا استخدام VBA .
هنا ، سأقوم بنسخ نطاق من Dataset2 إلى الورقة 1 من Book2 ولكن من الخلية الأولى غير الفارغة.
لبدء الإجراء ،
أولاً ، افتح علامة التبويب Developer & gt؛ & gt؛ حدد Visual Basic
كما يمكنك استخدام لوحة المفاتيح ALT + F11 لفتح محرر VBA .
بعد ذلك ، ستفتح نافذة جديدة من Microsoft Visual Basic for Applications.
من هناك ، افتح Insert & GT ؛ & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
6227
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_BelowLastCell_To_Another_Workbook حيث wsCopy و wsDestination هي ورقة عمل النوع ، lCopyLastRow و lDestLastRow هي نوع طويل.
أولاً ، استخدم اضبط لتعيين متغيرات للورقة المراد نسخها والورقة الوجهة.
التالي ، استخدم طريقة Row للعثور على الصف الأخير بناءً على بيانات العمود A في نطاق النسخ.
مرة أخرى ، استخدم طريقة الصف للعثور على أول صف فارغ بناءً على بيانات العمود A في نطاق الوجهة ، استخدم أيضًا الإزاحة للتنقل لأسفل خاصية واحدة.
أخيرًا ، نسخ بيانات الورقة Dataset2 من Excel VBA Copy Range to Other Sheet.xlsm المصنف إلى الوجهة Sheet1 من المصنف Book2.xlsx .
الآن ، احفظ الكود والعودة إلى ورقة العمل.
بعد ذلك ، افتح عرض علامة التبويب & gt؛ & gt؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سينبثق.
الآن ، من اسم الماكرو حدد Copy_Range_BelowLastCell_To_Another_Workbook أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد الماكرو .
ومن ثم ، نسخ النطاق المحدد من الورقة الموجودة إلى الصف الأخير من مصنف آخر.
قسم التدريب
لقد قدمت ورقة تدريب في المصنف لممارسة هذه الطرق الموضحة في Excel VBA نطاق النسخ إلى ورقة أخرى.
الاستنتاج
في هذه المقالة ، شرحت 8 أنواع مختلفة من الطرق السهلة والسريعةExcel VBA نسخ النطاق إلى ورقة أخرى. ستساعدك هذه الطرق المختلفة على نسخ نطاق من ورقة إلى أخرى وأيضًا من ورقة إلى مصنف آخر. أخيرًا وليس آخرًا ، إذا كان لديك أي نوع من الاقتراحات والأفكار والتعليقات ، فلا تتردد في التعليق أدناه.
الوحدة النمطية.3791
هنا ، أعلنت الإجراء الفرعي Copy_Range_withFormat_ToAnother_Sheet
لقد أخذت النطاق B1: E10 للنسخ من الورقة الموجودة إلى اسم الورقة WithFormat .
هنا ، استخدمت نسخ طريقة لنسخ النطاق المحدد ، نسخ الطريقة نسخ أي نطاق مع تنسيق .
أخيرًا ، حفظ الرمز والعودة إلى ورقة العمل .
بعد ذلك ، افتح علامة التبويب عرض & gt؛ & gt؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف يطفو على السطح.
الآن ، من اسم الماكرو حدد Copy_Range_withFormat_ToAnother_Sheet أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد ماكرو .
ومن ثم ، نسخ النطاق المحدد مع تنسيق إلى الورقة الجديدة التي حددتها ( WithFormat) .
2. VBA نسخ نطاق إلى ورقة أخرى بدون تنسيق
وهو أيضًا من الممكن نسخ نطاق إلى ورقة أخرى بدون تنسيق باستخدام VBA .
هنا ، نسخ نطاق من ورقة Dataset إلى ورقة WithoutFormat .
لنبدأ الإجراء ،
الآن ، افتح Developer علامة التبويب & GT ؛ & GT. حدد Visual Basic ( استخدم ALT + F11)
بعد ذلك ، سيفتح Microsoft Visual Basic for Applications.
ثم افتح Insert & GT. & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
3420
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_WithoutFormat_Toanother_Sheet
لقد أخذت النطاق B1: E10 للنسخ من الورقة الموجودة إلى اسم الورقة WithoutFormat .
هنا ، استخدمت طريقة Copy لنسخ النطاق المحدد ولكن أيضًا المذكورة لصق: = xlPasteValues في طريقة PasteSpecial بحيث تلصق فقط قيم للنطاق المحدد ، وليس التنسيق.
أخيرًا ، حفظ الكود والعودة إلى ورقة العمل.
بعد ذلك ، افتح عرض علامة التبويب & gt؛ & gt؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سينبثق.
الآن ، من اسم الماكرو حدد Copy_Range_WithoutFormat_Toanother_Sheet وحدد أيضًا المصنف ضمن وحدات الماكرو في .
أخيرًا ، قم بتشغيل المحدد الماكرو .
وبالتالي ، فإنه ينسخ النطاق المحدد فقط مع القيم لا التنسيق .
3. انسخ نطاقًا إلى ورقة أخرى بالتنسيق وعرض العمود
في بعض الأحيان قد ترغب في انسخ أي نطاق محدد كما هو ، لذلك يمكنك نسخ نطاق مع تنسيق و عرض العمود .
هنا ، سأقوم بنسخ نطاقًا من ورقة مجموعة البيانات إلى تنسيق & amp؛ عرض العمودورقة .
لمعرفة الإجراء للقيام بالمهمة باستخدام VBA ،
أولاً ، افتح علامة التبويب Developer & gt؛ & gt؛ حدد Visual Basic
كما يمكنك استخدام لوحة المفاتيح ALT + F11 لفتح محرر VBA .
التالي ، ستفتح نافذة جديدة من Microsoft Visual Basic for Applications.
هناك ، افتح إدراج & GT ؛ & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
5725
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth
لقد اتخذت النطاق B1: E10 للنسخ من الورقة الموجودة إلى اسم الورقة الوجهة Format & amp؛ عرض العمود .
هنا ، استخدمت طريقة نسخ لنسخ النطاق المحدد. لقد استخدمت أيضًا طريقة PasteSpecial حيث ذكرت Paste: = xlPasteColumnWidths بحيث تلصق النطاق المحدد مع Format و Column Width .
أخيرًا ، حفظ الكود والعودة إلى ورقة العمل.
بعد ذلك ، افتح عرض علامة التبويب & gt؛ & gt؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف يطفو على السطح.
الآن ، من اسم الماكرو حدد Copy_Range_to_Another_Sheet_with_FormatAndColumnWidth وحدد أيضًا المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد ماكرو .
نتيجة لذلك ، سوف نسخ النطاق المحدد مع تنسيق و عرض العمود .
4. VBA انسخ نطاقًا إلى ورقة أخرى باستخدام الصيغة
في حالة وجود أي صيغة في مجموعة البيانات تريد نسخها. لا تقلق! يمكنك نسخ النطاق الذي يحتوي على الصيغة إلى ورقة أخرى مع الحفاظ على الصيغة سليمة.
هنا ، سوف نسخ نطاق من ورقة مجموعة البيانات إلى WithFormula sheet
لنبدأ الإجراء ،
للبدء ، افتح Developer tab & gt؛ & gt؛ حدد Visual Basic ( يمكنك أيضًا استخدام ALT + F11 لوحة المفاتيح)
التالي ، سيفتح Microsoft Visual Basic للتطبيقات.
من هناك ، افتح Insert & gt؛ & gt؛ حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
6801
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_withFormula_ToAnother_Sheet
لقد أخذت النطاق B1: E10 للنسخ من الورقة الموجودة إلى اسم الورقة الوجهة WithFormula .
هنا ، استخدمت طريقة Copy لنسخ النطاق المحدد. لقد استخدمت أيضًا طريقة PasteSpecial حيث ذكرت Paste: = xlPasteFormulas بحيث تحمل الصيغ جنبًا إلى جنب مع النطاق المحدد.
أخيرًا ، حفظ الرمز والعودة إلى ورقة العمل.
ثم افتح عرض علامة التبويب & GT ؛ & GT. من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف ينبثق.
الآن ، من اسم الماكرو حدد Copy_Range_withFormula_ToAnother_Sheet أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد الماكرو .
وبالتالي ، فإنه ينسخ جميع نطاقات الخلايا المحددة مع الصيغ .
قراءات مماثلة:
- كيفية استخدام VBA Range Offset (11 طريقة)
- VBA لكل خلية في النطاق في Excel (3 طرق)
- كيفية استخدام كائن النطاق لـ VBA في Excel (5 خصائص)
5. انسخ نطاق باستخدام AutoFit إلى ورقة أخرى
أثناء نسخ نطاق إلى ورقة أخرى ، يمكنك أيضًا استخدام طريقة AutoFit في VBA إلى AutoFit النطاق المنسوخ في الورقة الجديدة.
هنا ، نسخ نطاق من مجموعة البيانات ورقة إلى احتواء تلقائي ورقة
لنبدأ الإجراء ،
أولاً ، افتح علامة التبويب المطور & gt؛ & gt؛ حدد Visual Basic
كما يمكنك استخدام لوحة المفاتيح ALT + F11 لفتح محرر VBA .
التالي ، سيفتح نافذة Microsoft Visual Basic for Applications.
ثم افتح Insert & gt ؛ & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الفتح الوحدة النمطية .
5014
هنا ، أعلنت الإجراء الفرعي Copy_Range_withFormat_AutoFit
أولاً ، حددت ورقة العمل مجموعة البيانات . ثم أخذ النطاق B1: E10 للنسخ من الورقة الموجودة إلى الورقة الوجهة المسماة AutoFit .
هنا ، استخدمت نسخ لنسخ النطاق المحدد وستعمل طريقة AutoFit تلقائيًا على احتواء الأعمدة المعطاة B: E .
أخيرًا ، احفظ الرمز وانتقل العودة إلى ورقة العمل.
بعد ذلك ، افتح عرض علامة التبويب & GT ؛ & GT ؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف يطفو على السطح.
الآن ، من اسم الماكرو حدد Copy_Range_withFormat_AutoFit أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد الماكرو .
ومن ثم ، نسخ النطاق المحدد إلى ورقة جديدة وأيضًا الاحتواء التلقائي الأعمدة.
6. VBA Copy a Range to Other Workbook
إذا كنت تريد يمكنك أيضًا نسخ نطاق من ورقة واحدة إلى ورقة أخرى من مصنف مختلف.
هنا ، نسخ نطاق من ورقة مجموعة البيانات إلى ورقة 1 من Book1 المصنف.
لنبدأ الإجراء ،
أولاً ، افتح علامة التبويب Developer & gt؛ & gt؛ حدد Visual Basic (y أو يمكنك أيضًا استخدام ALT + F11 لوحة المفاتيح)
ثم ، سيفتح Microsoft Visualأساسي للتطبيقات.
التالي ، افتح Insert & gt؛ & gt؛ حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
1230
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_WithFormat_Toanother_WorkBook
لقد أخذت النطاق B3: E10 من اسم الورقة Dataset للنسخ من الورقة الموجودة إلى اسم المصنف الجديد Book1 واسم الورقة Sheet1 .
هنا ، استخدمت طريقة نسخ لنسخ النطاق المحدد إلى المصنف الجديد.
أخيرًا ، حفظ الرمز والعودة إلى ورقة العمل.
بعد ذلك ، افتح علامة التبويب عرض علامة التبويب & gt؛ & gt؛ من وحدات ماكرو & GT ؛ & GT. حدد عرض وحدات الماكرو
➤ A مربع حوار سوف يطفو على السطح.
الآن ، من اسم الماكرو حدد Copy_Range_WithFormat_Toanother_WorkBook أيضًا حدد المصنف ضمن وحدات الماكرو في .
أخيرًا ، تشغيل المحدد الماكرو .
الآن ، سيقوم نسخ النطاق المحدد من ورقة مجموعة البيانات إلى مصنف آخر.
7. انسخ نطاقًا إلى الصف الأخير من ورقة أخرى
في أي حال ، إذا كنت تريد نسخ نطاق إلى ورقة أخرى من خلية معينة أو من الخلية الأخيرة ، يمكنك القيام بذلك باستخدام VBA .
قبل الدخول في الإجراء ، أريد أن أخبرك ، لقد أخذت ورقتين جديدتين تتكونان من الاسم الكامل ، البريد الإلكتروني ، و العنوان .
دعونا نلاحظ ورقة مجموعة البيانات 2 أولاً.
هنا ورقة أسفل الخلية الأخيرة .
هنا ، نسخ نطاق من Dataset2 ورقة إلى أسفل الخلية الأخيرة ولكن من أول خلية غير فارغة.
للبدء ، افتح علامة التبويب Developer & gt؛ & gt؛ حدد Visual Basic
التالي ، سيفتح Microsoft Visual Basic for Applications.
ثم افتح إدراج & GT ؛ & GT. حدد الوحدة النمطية .
سيتم فتح A الوحدة النمطية ثم اكتب الرمز التالي في الوحدة النمطية المفتوحة .
1206
هنا ، لقد أعلنت الإجراء الفرعي Copy_Range_BelowLastCell_AnotherSheets
أولاً ، حددت الورقة Dataset2 ثم استخدم طريقة Row لحساب الصف الأخير والاحتفاظ بالصف المحسوب في lr .
ثم أخذ النطاق A2: C & أمبير ؛ lr للنسخ من الورقة الموجودة إلى اسم الورقة الوجهة أسفل الخلية الأخيرة .
مرة أخرى ، استخدم طريقة الصف لحساب الأخير صف من ورقة أخرى باسم أسفل الخلية الأخيرة واحتفظ بالصف المحسوب في lrAnotherSheet .
هنا ، استخدمت طريقة نسخ لنسخ النطاق المحدد وستعمل طريقة AutoFit تلقائيًا على احتواء الأعمدة المعطاة A: C .
أخيرًا ، احفظ الرمز والعودة إلى ورقة العمل.
بعد ذلك ، افتح علامة التبويب عرض & gt؛ & gt؛ من وحدات ماكرو