VBA - Adicionando uma planilha a uma pasta de trabalho
VBA - Adicionando uma planilha a uma pasta de trabalho
Introdução
Dependendo do resultado que você deseja alcançar, você pode usar o:- Copiar método => Para uma cópia de uma folha existente
- Adicionar método => Para adicionar uma nova folha em branco à sua pasta de trabalho.
Você também deve certificar-se de que o nome da nova planilha seja compatível. Isto é, o nome da folha não deve ser idêntico a um existente ou conter qualquer caractere proibido. Em ambos os casos, os métodos de verificação devem ser os mesmos.
Método de cópia
Copie uma folha. Os dados e o formato da nova planilha serão idênticos à planilha de origem.Sintaxe
expressão .Copy ( Antes, Depois )A expressão pode ser um objeto Sheet ou Worksheet.
Os parâmetros Before e After são opcionais. Você só pode especificar um desses dois parâmetros. Eles são do tipo Variant e podem representar o local da planilha antes ou depois daquele que você deseja copiar. Se o parâmetro for omitido, a planilha será automaticamente copiada para uma nova pasta de trabalho.
O que acontece depois?
Ao criar uma nova planilha com o método Copiar:- A planilha é criada no local desejado (antes ou depois de outra planilha na pasta de trabalho)
- Ele é renomeado com base no nome da planilha de origem. Exemplo: Folha1 => Folha1 (2)
- É idêntico à folha copiada.
- Torna-se a folha ativa. Se a folha é copiada para uma nova pasta de trabalho, ela se torna a pasta de trabalho ativa.
Exemplos de uso
Copie o "Sheet1" após "Sheet3"Planilhas ("Planilha1"). Copiar Depois: = Planilhas ("Planilha3")
Copie o "Sheet4" antes do "Sheet2":
Folhas ("Folha4"). Copiar Antes: = Folhas ("Folha2")
Copie a planilha "recapitular" em uma nova pasta de trabalho
Folhas de trabalho ("recapitular").
Copie a folha indexada como 1 na última posição da pasta de trabalho, independentemente do nome da última folha:
Folhas (1) .Copiar Depois: = Folhas (Sheets.Count)
Copie a folha indexada como 10 no início da pasta de trabalho, independentemente do nome da última folha:
Folhas (10) .Copiar Antes: = Folhas (1)
Você deseja copiar várias planilhas da sua pasta de trabalho ativa em uma nova pasta de trabalho:
Folhas (Matriz ("Folha1", "Folha3", "Folha5")).
O método Add
Cria uma nova planilha (gráficos ou macro). A nova planilha se torna a planilha ativa.Esta nova planilha não contém dados ou formatação.
Sintaxe
expressão .Adicionar ( antes, depois, contar, tipo )A expressão pode ser um objeto Sheet ou Worksheet.
Os parâmetros Before, After, Count e type são opcionais.
Qualquer um e antes - você pode especificar apenas um desses parâmetros. Eles são do tipo Variant e podem representar o local da planilha antes ou depois daquele que você deseja copiar.
O parâmetro Count também é uma variante. Representa o número de folhas que você deseja adicionar.
O parâmetro Type representa o tipo de folha que você deseja adicionar.
- xlWorkSheet - adiciona uma planilha
- xlChart - adiciona uma folha de gráfico
- xlExcel4MacroSheet - adiciona uma folha de macro (Excel4)
- xlExcel4IntlMacroSheet - exibe uma folha de macro
- xlDialogSheet - adiciona uma folha de diálogo.
NB: Não se esqueça de renomear seus parâmetros ou a sintaxe retornará o erro abaixo:
ActiveWorkbook.Sheets.Add Antes: = Worksheets (Worksheets.Count),, 1, xlChart
Exemplos de uso
Coloque uma folha após a última folha na pasta de trabalho:Sheets.Add After: = Worksheets (Worksheets.Count)
Adiciona três folhas na "primeira posição" da pasta de trabalho ativa:
ActiveWorkbook.Sheets.Add Antes: = Planilhas (1), Contagem: = 3
Adiciona uma planilha de gráfico em uma pasta de trabalho chamada "Wbk18" (Abrir!) Após a planilha "Sheet4"
WorkBooks ("Wbk18"). Sheets.Add After: = Worksheets ("Sheet4"), Tipo: = xlChart
Testando a folha
Verificar se a planilha já existe na pasta de trabalho
'Testar a função existente' Função Feuil_Exist (strWbk Como String, strWsh As String) Como Booleana 'Gestionnaire d'erreur Em Error Resume Next' "Teste" Feuil_Exist = (Workbooks (strWbk) .Sheets (strWsh) .Name = strWsh) Função final
Verifique se o nome do arquivo contém caracteres proibidos
'Testar a contenção de contatores em função de um atributo Função Valid_Name (strName Como String, strChr As String) Como Booleano Dim i Como Byte, Tb_Car () Como String, strProhib As String strProhib = "/ \: *?" "|" 'Liste des caractères à éviter Tb_Car = Dividir (StrConv (strProhib, vbUnicode), Chr $ (0))' Boucle sur tous les caractères à éviter 'Nota: le -1 est dû au Dividir da cadeia par a sseparateur 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' Testar a contenção de um contêiner proibida se for InStr (strName, Tb_Car (i))> 0 Então 'Si oui: Retornar False Valid_Name = False' ET Retourne le caractère proibido strChr = Tb_Car (i) Sair Função End If Próximo i 'Si OK: Retorna True Valid_Name = True End Function
Chamando a função de verificação
O código é o mesmo para o método Copiar ou Adicionar.Sub Principale () Dim strNewName Como String, strCara Como String strNewName = "NewSheet" Se Valid_Name (strNewName, strCara) = False Então MsgBox "Le nom:" & strNewName & "est invalide." & vbCrLf & _ "Un nom de feuille ne peut pas contenir le caractère:" & strCara, vb Saída Crítica Sub End Se IfFeuil_Exist (ThisWorkbook.Name, strNewName) = True Então MsgBox "Le nom:" & strNewName & "est invalide. " & vbCrLf & _ "O nome do arquivo está sendo usado na classe.", vbCritical Exit Sub End If ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets ("Feuil1"). Copy After: = Sheets (Sheets.Count) ActiveSheet.Name = strNewName End Sub
Algumas dicas úteis para o Office 2013
O Office 2013 traz dois métodos complementares àqueles vistos anteriormente:- Copie um intervalo de células para uma folha e várias folhas
- O método Add2 para coleções de objetos Gráficos.
Copie um intervalo de célula usando o método FillAcrossSheets
Este método só está disponível para o Office 2013. Você deseja copiar o intervalo de células de "Sheet1" para "Sheet3", "Sheet5" e "Sheet7".Sheets = Array ("Sheet3", "Sheet5", "Sheet7") Sheets (Sheets) .FillAcrossSheets Worksheets ("Sheet1"). Range ("A1: C5")
Os parâmetros deste método são:
- Intervalo: obrigatório
- Tipo: opcional
- xlFillWithAll: Copie o conteúdo e os formatos.
- xlFillWithContents: copie o conteúdo.
- xlFillWithFormats: formatos de cópia.
O método Add2
Esse método só está disponível para o Office 2013. Esse método se aplica a coleções de objetos Gráficos e retorna um erro " Runtime " quando usado com objetos Sheets e WorkSheets. Não há mais informações no Microsoft.com, exceto a sintaxe:expressão .Adicionar ( antes, depois, contar, NewLayout )
Expressão representa um objeto de planilha
Os parâmetros são idênticos ao método Add, simplesmente substitua o parâmetro Type por NewLayout. Se NewLayout estiver definido como True, o gráfico será inserido usando as novas regras.