VBA - Dodawanie arkusza do skoroszytu
VBA - Dodawanie arkusza do skoroszytu
![](http://img.brin-designs.com/img/games/192/vba-adding-sheet-workbook.png)
Wprowadzenie
W zależności od wyniku, który chcesz osiągnąć, możesz użyć:- Metoda kopiowania => Kopia istniejącego arkusza
- Dodaj metodę => Aby dodać nowy pusty arkusz do skoroszytu.
Musisz także upewnić się, że nazwa nowego arkusza jest zgodna. Oznacza to, że nazwa arkusza nie powinna być identyczna z istniejącą ani zawierać żadnych zabronionych znaków. W obu przypadkach metody weryfikacji powinny być takie same.
Metoda kopiowania
Skopiuj arkusz. Dane i format nowego arkusza będą identyczne z arkuszem źródłowym.Składnia
expression .Copy ( Before, After )Wyrażenie może być obiektem arkusza lub arkusza roboczego.
Parametry Przed i Po są opcjonalne. Możesz określić tylko jeden z tych dwóch parametrów. Są one typu Variant i mogą reprezentować lokalizację arkusza przed lub po tym, który chcesz skopiować. Jeśli parametr zostanie pominięty, arkusz zostanie automatycznie skopiowany do nowego skoroszytu.
Co się wtedy stanie?
Podczas tworzenia nowego arkusza za pomocą metody Kopiuj:- Arkusz jest tworzony w żądanym miejscu (przed lub po innym arkuszu w skoroszycie)
- Nazwa jest zmieniana na podstawie nazwy arkusza źródłowego. Przykład: Arkusz1 => Arkusz1 (2)
- Jest identyczny z skopiowanym arkuszem.
- Staje się aktywnym arkuszem. Jeśli arkusz zostanie skopiowany do nowego skoroszytu, staje się aktywnym skoroszytem.
Przykłady użycia
Skopiuj „Arkusz1” po „Arkuszu3”Arkusze robocze („Arkusz1”). Kopiuj po: = Arkusze („Arkusz3”)
Skopiuj „Sheet4” przed „Sheet2”:
Arkusze („Arkusz4”). Kopiuj przed: = Arkusze („Arkusz2”)
Skopiuj arkusz „podsumowanie” w nowym skoroszycie
Arkusze robocze („podsumowanie”). Kopiuj
Skopiuj arkusz zindeksowany jako 1 na ostatniej pozycji skoroszytu, niezależnie od nazwy ostatniego arkusza:
Arkusze (1). Kopiuj po: = Arkusze (arkusze)
Skopiuj arkusz zindeksowany jako 10 na początku skoroszytu, niezależnie od nazwy ostatniego arkusza:
Arkusze (10). Kopiuj przed: = Arkusze (1)
Chcesz skopiować wiele arkuszy aktywnego skoroszytu do nowego skoroszytu:
Arkusze (Array („Arkusz1”, „Arkusz3”, „Arkusz5”)). Kopiuj
Metoda dodawania
Tworzy nowy arkusz kalkulacyjny (grafika lub makro). Nowy arkusz staje się aktywnym arkuszem.Ten nowy arkusz nie zawiera żadnych danych ani formatowania.
Składnia
expression .Add ( Before, After, Count, Type )Wyrażenie może być obiektem arkusza lub arkusza roboczego.
Parametry Przed, Po, Liczba i typ są opcjonalne.
Albo i wcześniej - możesz określić tylko jeden z tych parametrów. Są one typu Variant i mogą reprezentować lokalizację arkusza przed lub po tym, który chcesz skopiować.
Parametr Count jest również wariantem. Reprezentuje liczbę arkuszy, które chcesz dodać.
Parametr Typ reprezentuje typ arkusza, który chcesz dodać.
- xlWorkSheet - dodaje arkusz
- xlChart - dodaje arkusz wykresu
- xlExcel4MacroSheet - dodaje arkusz makr (Excel4)
- xlExcel4IntlMacroSheet - wyświetla arkusz makra
- xlDialogSheet - dodaje arkusz dialogowy.
Uwaga: nie zapomnij zmienić nazwy parametrów lub składnia zwróci poniższy błąd:
ActiveWorkbook.Sheets.Add Before: = Arkusze (Worksheets.Count),, 1, xlChart
Przykłady użycia
Umieść arkusz po ostatnim arkuszu w skoroszycie:Arkusze.Dodaj po: = Arkusze robocze (arkusze kalkulacyjne)
Dodaje trzy arkusze w „pierwszej pozycji” aktywnego skoroszytu:
ActiveWorkbook.Sheets.Add Before: = Arkusze (1), Count: = 3
Dodaje arkusz wykresu w skoroszycie o nazwie „Wbk18” (Otwórz!) Po arkuszu o nazwie „Arkusz4”
WorkBooks ("Wbk18"). Sheets.Add After: = Arkusze ("Sheet4"), Wpisz: = xlChart
Testowanie arkusza
Sprawdź, czy arkusz już istnieje w skoroszycie
'Test si la feuille existe déjà Funkcja Feuil_Exist (strWbk As String, strWsh As String) Jako Boolean' Gestionnaire d'erreur On Error Resume Next '„Test” Feuil_Exist = (Skoroszyty (strWbk) .Sheets (strWsh) .Name = strWsh) Zakończ funkcję
Sprawdź, czy nazwa pliku zawiera zabronione znaki
'Test si la chaine contient un caractère à éviter Funkcja Valid_Name (strName As String, strChr As String) Jako 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 prohibé If InStr (strName, Tb_Car (i))> 0 Wtedy 'Si oui: Zwróć False_Name = False' ET Retourne le caractère prohibé strChr = Tb_Car (i) Wyjście Funkcja End Jeśli Next i 'Si OK: Return True Valid_Name = True End Function
Wywoływanie funkcji weryfikacji
Kod jest taki sam dla metody Kopiuj lub Dodaj.Sub Principale () Dim strNewName As 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 MsgBox "Le nom:" & strNewName & "est invalide. „ & vbCrLf & _ "Ce nom de feuille est déjà utilisé dans ce classeur.", vbCritical Exit Sub End Jeśli ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). Copy After: = Sheets (Sheets.Count) ActiveSheet.Name = strNewName End Sub
Kilka przydatnych wskazówek dla pakietu Office 2013
Office 2013 wprowadza dwie uzupełniające się metody do wcześniejszych:- Skopiuj zakres komórek do arkusza i wielu arkuszy
- Metoda Add2 dla kolekcji obiektów Wykresów.
Skopiuj zakres komórki za pomocą metody FillAcrossSheets
Ta metoda jest dostępna tylko dla pakietu Office 2013. Chcesz skopiować zakres komórek z „Arkusz1” do „Arkusz3”, „Arkusz5” i „Arkusz7”.Arkusze = Array („Sheet3”, „Sheet5”, „Sheet7”) Arkusze (arkusze) .FillAcrossSheets Worksheets („Sheet1”). Range („A1: C5”)
Parametrami tej metody są:
- Zakres: wymagany
- Typ: opcjonalny
- xlFillWithAll: Skopiuj zawartość i formaty.
- xlFillWithContents: Skopiuj zawartość.
- xlFillWithFormats: Kopiowanie formatów.
Metoda Add2
Ta metoda jest dostępna tylko dla pakietu Office 2013. Ta metoda ma zastosowanie do kolekcji obiektów Wykresów i zwraca błąd „ Runtime ” podczas używania z obiektami Arkusze i Arkusze robocze. Nie więcej informacji na Microsoft.com z wyjątkiem składni:expression .Add ( Before, After, Count, NewLayout )
Wyrażenie reprezentuje obiekt arkusza roboczego
Parametry są identyczne z metodą Add, po prostu zamień parametr Type na NewLayout. Jeśli opcja NewLayout ma wartość True, grafika jest wstawiana przy użyciu nowych reguł.