VBA - Çalışma kitabına sayfa ekleme

VBA - Çalışma kitabına sayfa ekleme

Giriş

Ulaşmak istediğiniz sonuca bağlı olarak, aşağıdakilerden birini kullanabilirsiniz:
  • Kopyalama yöntemi => Mevcut bir sayfanın kopyası için
  • Add method => Çalışma kitabınıza yeni bir boş sayfa eklemek için.

Yeni sayfanın adının uyumlu olduğundan da emin olmalısınız. Diğer bir deyişle, sayfanın adı mevcut olanla aynı olmamalı veya herhangi bir yasak karakter içermemelidir. Her iki durumda da, doğrulama yöntemleri aynı olmalıdır.

Kopya yöntemi

Bir sayfayı kopyala. Yeni sayfanın verileri ve formatı kaynak sayfayla aynı olacaktır.

Sözdizimi

İfade .Copy ( Önce, Sonra )

İfade bir Sayfa veya Çalışma Sayfası nesnesi olabilir.

Önce ve Sonra parametreleri isteğe bağlıdır. Bu iki parametreden sadece birini belirleyebilirsiniz. Bunlar Variant türündedir ve kopyalamak istediğinizden önce veya sonra konumlandırılan sayfayı temsil edebilir. Parametre atlanırsa, sayfa otomatik olarak yeni bir çalışma kitabına kopyalanır.

O zaman ne olacak?

Kopyalama yöntemiyle yeni bir sayfa oluştururken:
  • Sayfa istenen yerde yaratılır (çalışma kitabındaki başka bir sayfanın öncesinde veya sonrasında)
  • Kaynak sayfanın adına göre yeniden adlandırılmıştır. Örnek: Sayfa1 => Sayfa1 (2)
  • Kopyalanan sayfa ile aynıdır.
  • Aktif sayfa haline gelir. Sayfa yeni bir çalışma kitabına kopyalanırsa, aktif çalışma kitabı olur.

Kullanım örnekleri

"Sayfa3" den sonra "Sayfa1" kopyalayın

 Çalışma Sayfaları ("Sayfa1"). Sonra Kopyala: = Çalışma Sayfaları ("Sayfa3") 

"Sayfa2" den "Sayfa2" den önce kopyalayın:

 Sayfalar ("Sayfa4") Önce Kopyala: = Sayfalar ("Sayfa2") 

"Özet" sayfasını yeni bir çalışma kitabına kopyala

 Çalışma Sayfaları ( "özetleyelim"). Kopya 

Son sayfanın adına bakılmaksızın, çalışma kitabının son konumuna 1 olarak dizine eklenen sayfayı kopyalayın:

 Sayfalar (1) .Copy After: = Sayfalar (Sayfalar. Miktarı) 

Son sayfanın adına bakılmaksızın, çalışma kitabının başında 10 olarak dizine eklenen sayfayı kopyalayın:

 Sayfalar (10) .Copy Önce: = Sayfalar (1) 

Etkin çalışma kitabınızın birden çok sayfasını yeni bir çalışma kitabına kopyalamak istiyorsunuz:

 Sayfalar (Dizi ("Sayfa1", "Sayfa3", "Sayfa5")). 

Ekleme Yöntemi

Yeni bir elektronik tablo oluşturur (grafik veya makro). Yeni çalışma sayfası aktif sayfa haline gelir.

Bu yeni sayfa herhangi bir veri veya format içermiyor.

Sözdizimi

expression .Add ( Önce, Sonra, Sayı, Tür )

İfade bir Sayfa veya Çalışma Sayfası nesnesi olabilir.

Önce, Sonra, Sayma ve yazma parametreleri isteğe bağlıdır.

Ya Da Önce - Bu parametrelerden yalnızca birini belirleyebilirsiniz. Bunlar Variant türündedir ve kopyalamak istediğinizden önce veya sonra konumlandırılan sayfayı temsil edebilir.

Count parametresi de bir Varyanttır. Eklemek istediğiniz sayfa sayısını gösterir.

Type parametresi, eklemek istediğiniz sayfanın türünü temsil eder.

  • xlWorkSheet - çalışma sayfası ekler
  • xlChart - bir grafik sayfası ekler
  • xlExcel4MacroSheet - bir makro sayfası ekler (Excel4)
  • xlExcel4IntlMacroSheet - bir makro sayfası adss
  • xlDialogSheet - bir iletişim sayfası ekler.

Not: Parametrelerinizi yeniden adlandırmayı unutmayın, yoksa sözdizimi aşağıdaki hatayı verir:

 ActiveWorkbook.Sheets.Add Önce: = Çalışma Sayfaları (Çalışma Sayfaları. Miktarı),, 1, xlChart 

Kullanım örnekleri

Çalışma kitabındaki son sayfadan sonra bir sayfa yerleştirin:

 Sayfa Sonrası: = Çalışma Sayfaları (Worksheets.Count) 

Etkin çalışma kitabının "ilk konumuna" üç sayfa ekler:

 ActiveWorkbook.Sheets.Add Before: = Çalışma Sayfaları (1), Sayı: = 3 

"Sayfa4" adlı sayfadan sonra "Wbk18" (Aç!) Adlı bir çalışma kitabına bir sayfa ekler.

 Çalışma Kitapları ("Wbk18") Sayfalar.Add After: = Çalışma Sayfaları ("Sayfa4"), Tür: = xlChart 

Sayfayı Test Etme

Sayfa çalışma kitabında zaten var mı kontrol edin

 'Test si la feuille exe déjà İşlev Feuil_Exist (strWbk As Dize, strWsh As Dize) Boolean Olarak' Gestionnaire d'erreur Ardından Devam Ediyor '"Test" Feuil_Exist = (Çalışma Kitapları (strWbk) .Sheets (strWsh) .Name = strWbk. Son İşlev 

Dosya adının yasak karakterler içerip içermediğini kontrol edin.

 'Test ve isteğe bağlı test et é iter iter Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Function Val Val Function Function Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val Val ol Bo Bo Bo ol ol ol ol ol Bo ol ol ol ol ol ol ol te te 'Titer' in listesi: Tb_Car = Split (StrConv (strProhib, vbUnicode), Ch $ $ (0)) 'Boucle sur tous les caractères éviter' Nota: 1 - 1 ) 'En etkili, en son, en son chr (0)' in son derece açık ve kapalı olması için i = LBound (Tb_Car) ile UBound (Tb_Car) için - 1 'InStr (strName)' in test edilmesini engelle, Tb_Car (i))> 0 Ardından 'Si oui: Dönüş Yanlış Valid_Name = Yanlış' ET Retourne le caractère prohibé strChr = Tb_Car (i) Çıkış Fonksiyonu Sonrakini Devam Ederseniz: "Tamam" 

Doğrulama işlevini çağırma

Kod, hem Kopyala hem de Ekle yöntemi için aynıdır.
 Alt İlke () Dim strNewName Dize Olarak, strCara Dize Olarak strNewName = "NewSheet" Eğer Valid_Name ise (strNewName, strCara) = False Sonra MsgBox "Le nom:" & strNewName & "est invalide." & vbCrLf & _ "Bu kategorideki diğer bilgileri:" & strCara, vbCritical Çıkma Sonu Feuil_Exist Olursa (ThisWorkbook.Name, strNewName) = True Sonra MsgBox "Le nom:" & strNewName & "est invalide. " & vbCrLf & _ "Bu kategoriden daha fazla faydalanın.", vb. Eleştirel Çıkış Sonu-Bu Sayfala Kitapçık.Açık.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). ActiveSheet.Name = strNewName End Sub 

Office 2013 için bazı yararlı ipuçları

Office 2013, daha önce görülenlere iki tamamlayıcı yöntem getiriyor:
  • Bir hücre aralığını bir sayfaya ve birden çok sayfaya kopyalama
  • Grafikler nesnelerinin koleksiyonları için Add2 yöntemi.

FillAcrossSheets yöntemini kullanarak bir hücre aralığını kopyalama

Bu yöntem yalnızca Office 2013 için kullanılabilir. Hücre aralığını "Sayfa1" den "Sayfa3", "Sayfa5" ve "Sayfa7" ye kopyalamak istiyorsunuz.

 Sayfalar = Array ("Sayfa3", "Sayfa5", "Sayfa7") Sayfalar (Sayfalar) .FillAcrossSheets Çalışma Sayfaları ("Sayfa1"). Aralık ("A1: C5") 

Bu yöntemin parametreleri:

  • Aralık: gerekli
  • Türü: İsteğe bağlı
  • xlFillWithAll: İçeriği ve formatları kopyalayın.
  • xlFillWithContents: İçeriği kopyalayın.
  • xlFillWithFormats: Kopyalama biçimleri.

Add2 yöntemi

Bu yöntem yalnızca Office 2013 için kullanılabilir. Bu yöntem, Charts nesnelerinin koleksiyonları için geçerlidir ve Sheets ve WorkSheets nesnelerle birlikte kullanıldığında " Çalışma Zamanı " hatası verir. Microsoft.com'da sözdizimi dışında daha fazla bilgi yok:

İfade .Add ( Önce, Sonra, Say, NewLayout )

İfade, Çalışma Sayfası nesnesini temsil eder

Parametreler Add yöntemiyle aynıdır, yalnızca Type parametresini NewLayout ile değiştirin. NewLayout, True olarak ayarlanırsa, grafik yeni kurallar kullanılarak eklenir.

Önceki Makale Sonraki Makale

En Ipuçları