VBA - إضافة ورقة إلى مصنف

VBA - إضافة ورقة إلى مصنف

المقدمة

بناءً على النتيجة التي تريد تحقيقها ، يمكنك إما استخدام:
  • طريقة النسخ => للحصول على نسخة من ورقة موجودة
  • إضافة طريقة => لإضافة ورقة فارغة جديدة إلى المصنف الخاص بك.

يجب عليك أيضًا التأكد من أن اسم الورقة الجديدة متوافق. بمعنى أن اسم الورقة يجب ألا يكون مطابقًا لاسم موجود أو يحتوي على أي أحرف محظورة. في كلتا الحالتين ، يجب أن تكون طرق التحقق هي نفسها.

طريقة النسخ

نسخ ورقة. ستكون بيانات وشكل الورقة الجديدة متطابقة مع الورقة المصدر.

بناء الجملة

تعبير. نسخة ( قبل ، بعد )

يمكن أن يكون التعبير إما كائن ورقة أو ورقة عمل.

المعلمات قبل وبعد اختيارية. يمكنك فقط تحديد واحدة من هذه المعلمتين. إنها من النوع المتغير ويمكن أن تمثل إما موقع الورقة قبل أو بعد ذلك الذي تريد نسخه. إذا تم حذف المعلمة ، يتم نسخ الورقة تلقائيًا إلى مصنف جديد.

ما يحدث بعد ذلك؟

عند إنشاء ورقة جديدة باستخدام طريقة النسخ:
  • يتم إنشاء الورقة في الموقع المطلوب (قبل أو بعد ورقة أخرى في المصنف)
  • تتم إعادة تسميته بناءً على اسم الورقة المصدر. مثال: الورقة 1 => الورقة 1 (2)
  • إنه مطابق للورقة المنسوخة.
  • يصبح ورقة نشطة. إذا تم نسخ الورقة إلى مصنف جديد ، فسيصبح المصنف النشط.

أمثلة على الاستخدام

نسخ "Sheet1" بعد "Sheet3"

 أوراق العمل ("Sheet1"). النسخ بعد: = أوراق العمل ("Sheet3") 

انسخ "Sheet4" قبل "Sheet2":

 الأوراق ("Sheet4"). النسخ قبل: = الأوراق ("Sheet2") 

نسخ ورقة "recap" في مصنف جديد

 أوراق العمل ( "خلاصة"). نسخة 

انسخ الورقة المفهرسة كـ 1 في الموضع الأخير من المصنف ، بغض النظر عن اسم الورقة الأخيرة:

 أوراق (1). نسخة بعد: = أوراق (Sheets.Count) 

انسخ الورقة المفهرسة بالرقم 10 في بداية المصنف ، بغض النظر عن اسم الورقة الأخيرة:

 أوراق (10). نسخة قبل: = أوراق (1) 

تريد نسخ أوراق متعددة من المصنف النشط الخاص بك إلى مصنف جديد:

 الأوراق (المصفوفة ("الورقة 1" ، "الورقة 3" ، "الورقة 5")) 

طريقة الإضافة

ينشئ جدول بيانات جديد (رسومات أو ماكرو). تصبح ورقة العمل الجديدة الورقة النشطة.

لا تحتوي هذه الورقة الجديدة على أي بيانات أو تنسيق.

بناء الجملة

تعبير . إضافة ( قبل ، بعد ، عدد ، نوع )

يمكن أن يكون التعبير إما كائن ورقة أو ورقة عمل.

المعلمات قبل ، بعد ، العد والنوع اختيارية.

إما وقبل - يمكنك فقط تحديد واحدة من هذه المعلمات. إنها من النوع المتغير ويمكن أن تمثل إما موقع الورقة قبل أو بعد ذلك الذي تريد نسخه.

المعلمة Count هي أيضا متغير. يمثل عدد الأوراق التي تريد إضافتها.

تمثل المعلمة Type نوع الورقة التي تريد إضافتها.

  • xlWorkSheet - يضيف ورقة عمل
  • xlChart - يضيف ورقة الرسم البياني
  • xlExcel4MacroSheet - يضيف ورقة ماكرو (Excel4)
  • xlExcel4IntlMacroSheet - إعلانات ورقة ماكرو
  • xlDialogSheet - يضيف ورقة حوار.

ملحوظة: لا تنس إعادة تسمية المعلمات الخاصة بك أو بناء الجملة سيعود الخطأ أدناه:

 ActiveWorkbook.Sheets.Add قبل: = أوراق العمل (Worksheets.Count) ، 1 ، xlChart 

أمثلة على الاستخدام

ضع ورقة بعد الورقة الأخيرة في المصنف:

 Sheets.Add بعد: = أوراق العمل (Worksheets.Count) 

يضيف ثلاث أوراق في "الموضع الأول" من المصنف النشط:

 ActiveWorkbook.Sheets.Add قبل: = أوراق العمل (1) ، عدد: = 3 

لإضافة ورقة تخطيط في مصنف باسم "Wbk18" (فتح!) بعد الورقة المسماة "Sheet4"

 المصنفات ("Wbk18"). Sheets.Add After: = أوراق العمل ("Sheet4") ، النوع: = xlChart 

اختبار الورقة

تحقق مما إذا كانت الورقة موجودة بالفعل في المصنف

 'اختبار si la feuille موجودة déjà Function Feuil_Exist (strWbk باسم String ، strWsh As String) باسم Boolean' Gestionnaire d'erreur On Error Resume Next '"Test" Feuil_Exist = (Workbooks (strWbk) .Sheets (strWshk) .Name = strWsh) وظيفة النهاية 

تحقق مما إذا كان اسم الملف يحتوي على أحرف ممنوعة

 'Test si la chaine contient un caractère à éviter Function Valid_Name (strName As String، strChr As String) باسم Boolean Dim i As Byte، Tb_Car () As String، strProhib As String strProhib = "/ \: *؟" "|" 'Liste des caractères à éviter Tb_Car = Split (StrConv (strProhib، vbUnicode)، Chr $ (0))' Boucle sur tous les caractères à éviter 'Nota: le -1 est dû au Split de la chaine par le séparateur Chr (0 ) "En effet ، la chaine se terminant par un Chr (0) il convient d'exclure ce dernier caractère For i = LBound (Tb_Car) To UBound (Tb_Car) - 1" Test si la chaîne contient un caractère محظور If InStr (strName ، Tb_Car (i))> 0 ثم 'Si oui: Return False Valid_Name = False' ET Retourne le caractère محظور strChr = Tb_Car (i) إنهاء إنهاء الوظيفة إذا كان التالي i 'Si OK: Return True Valid_Name = True End Function 

استدعاء وظيفة التحقق

الكود هو نفسه لكل من الأسلوب نسخ أو إضافة.
 Sub Principale () Dim strNewName باسم String ، strCara As String strNewName = "NewSheet" If Valid_Name (strNewName، strCara) = False Then MsgBox "Le nom:" & strNewName & "est invalide." & vbCrLf & _ "Un nom de feuille ne peut pas contenir le caractère:" & strCara، vbCritical Exit Sub End If If Feuil_Exist (ThisWorkbook.Name، strNewName) = True Then MsgB "Le nom:" & strNewName & "est invalide. " & vbCrLf & _ "Ce nom de feuille est déjà utilisé dans ce classeur."، vbCritical Exit Sub End If ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). Copy After: = Sheets (Sheets.Count) ActiveSheet.Name = strNewName End Sub 

بعض النصائح المفيدة لبرنامج Office 2013

يقدم Office 2013 طريقتين متكاملتين لتلك التي تمت رؤيتها مسبقًا:
  • نسخ مجموعة من الخلايا إلى ورقة وأوراق متعددة
  • الأسلوب Add2 لمجموعات كائنات التخطيطات.

نسخ نطاق من الخلايا باستخدام الأسلوب FillAcrossSheets

تتوفر هذه الطريقة فقط لـ Office 2013. وتريد نسخ نطاق الخلايا من "Sheet1" إلى "Sheet3" و "Sheet5" و "Sheet7".

 صفائح = صفيف ("ورقة 3" ، "ورقة 5" ، "ورقة 7") أوراق (صفائح). أوراق عمل أوراق الشجر ("ورقة 1"). نطاق ("A1: C5") 

معلمات هذه الطريقة هي:

  • المدى: مطلوب
  • النوع: اختياري
  • xlFillWithAll: نسخ المحتويات والتنسيقات.
  • xlFillWithContents: انسخ المحتويات.
  • xlFillWithFormats: نسخ التنسيقات.

طريقة Add2

تتوفر هذه الطريقة فقط لـ Office 2013. تنطبق هذه الطريقة على مجموعات كائنات المخططات وترجع خطأ " وقت التشغيل " عند استخدامها مع كائنات الأوراق وأوراق العمل. لا مزيد من المعلومات على Microsoft.com باستثناء بناء الجملة:

تعبير .Add ( قبل ، بعد ، عدد ، NewLayout )

يمثل التعبير كائن ورقة عمل

المعلمات متطابقة مع الأسلوب Add ، ببساطة استبدل المعلمة Type بـ NewLayout. إذا تم تعيين NewLayout على True ، فسيتم إدراج الرسم باستخدام القواعد الجديدة.

المقال السابق المقالة القادمة

نصائح الأعلى