Como adicionar uma folha em uma planilha no VBA - CCM
Como adicionar uma folha em uma planilha no VBA
Última modificação: 5 de outubro de 2020 às 13:43 por Pedro Muxfeldt .
Existem duas maneiras de fazer isso: cópia (Copy) e adição (Add). Devemos verificar se o nome da folha está correto, ou seja, é diferente das demais folhas e não contém caracteres especiais. Em ambos os casos, os controles devem ser os mesmos.
As funções de verificação
Se a planilha já existe em uma pasta
Se o nome desejado tiver um caractere proibido
Código de chamada das funções de verificação
Complementos úteis do Office 2013
Cópia parcial
Este método realiza uma cópia de uma folha já criada. O formato e os dados serão idênticos na nova folha criada.
Expressão: Copy (Before, After).
Expressão representa uma Sheet (planilha) ou Worksheet (planilha de trabalho).
Os parâmetros ("Before e After") são opcionais. Você poderá especificar apenas um desses dois parâmetros. Eles são tipo Variante e representam a folha antes ou depois daquela que você quer copiar. Se o parâmetro for omitido, a folha é automaticamente copiada em uma nova planilha.
Ao criar uma nova folha por esse método, ela é criada no lugar desejado (antes ou depois de outra folha da pasta) e nomeada a partir da folha original (ex:: Planilha1 > Planilha1 (2)). Essa folha será idêntica à original e aparece ativada por padrão. Se a folha for copiada em uma nova pasta, ela se torna a planilha ativa.
Copie a "Plan1" depois da "Plan3":
Worksheets("Plan1").Copy After:=Worksheets("Plan3")
Copie a "Plan4" antes da "Plan2":
Sheets("Plan4").Copy Before:=Sheets("Plan2")
Copie a planilha de "recop" em uma nova pasta:
Worksheets("recop").Copy
Copie a planilha de índice 1 na última posição do arquivo, independentemente do nome da última planilha:
Copie a planilha de índice 10 na primeira posição do arquivo, independentemente do nome da primeira planilha:
Se quiser copiar várias planilhas de sua planilha ativa em um novo arquivo:
Sheets(Array("Plan1", "Plan3", "Plan5")).Copy
Crie uma nova planilha de cálculo, de gráfico ou de macro. A nova planilha se tornará a planilha ativa. E, sendo uma nova folha, esta será virgem de qualquer dado e de qualquer formato.
Expressão: .Add (Before, After, Count, Type).
Expressão representa um objeto Sheet ou Worksheet.
Os parâmetros (Before, After, Count e Type) são opcionais.
Você deve especificar apenas um dos parâmetros Before e After. Estes são do tipo Variante e representam a planilha antes ou depois da qual você deseja colocar a sua nova planilha.
O parâmetro Count (opcional) é do tipo Variante. Ele representa o número de planilhas que você deseja adicionar. O parâmetro tipo representa o tipo de planilha a ser adicionada. Trata-se de:
xlWorksheet, adiciona uma planilha,
xlChart, adiciona uma planilha de gráfico,
xlExcel4MacroSheet, adiciona uma planilha do Excel4,
xlExcel4IntlMacroSheet, adiciona uma planilha de macros do Excel,
xlDialogSheet, adiciona uma planilha de caixa de diálogo.
Atenção: todos estes parâmetros devem ser nomeados. Convém, então, nomeá-los. Esta sintaxe reenviará um erro:
Coloque uma planilha depois da última planilha do arquivo:
Adicione três planilhas na primeira posição do arquivo ativo:
Atenção: as três planilhas aparecem sucessivamente, a ordem poderá ser invertida. A planilha ativa é a última a ser criada.
Adiciona uma planilha de gráfico de um arquivo chamado "Wbk18" (Open!), depois a planilha com o nome "Plan4".
WorkBooks("Wbk18").Sheets.Add After:=Worksheets("Plan4"), Type:=xlChart
Atenção: A localização da planilha criada pode reservar algumas pequenas surpresas...
'Verifique se a planilha já existe.
Function Planilha_Exist(strWbk As String, strWsh As String) As Boolean
'Gerenciador de erro
Planilha_Exist =
'Verifique se a planilha já existe
Function Planiha_Exist(strWbk As String, strWsh As String) As Boolean.
'Verifique se a string contém um caractere a ser evitado
Função valid_name (strName As String, strchr As String) As Boolean
Dim i As Byte, Tb_Car () As String, strProhib As String
strProhib = "/\:*?""<>|" ' Lista dos caracteres a serem evitados
'Loop sobre todos os caracteres a serem evitados.
'Atenção: o -1 se deve ao split da string pelo separador Chr(0)
'Na verdade, na string que termina por um Chr(0) convém excluir este último caractere.
For i = LBound (Tb_Car) To
UBound (Tb_Car) - 1
'Verifique se a string contém um caractere proibido
If InStr(strName, Tb_Car (i))> 0 Then
'Se sim: Return False
'E retorna o caractere proibido
'Se OK: Return True
Em ambos os métodos, o código é o mesmo. Na verdade, a planilha criada leva um nome determinado pelo Excel e torna-se a planilha ativa. Como não se pode saber com antecedência o nome da nova planilha (Sheet1 (3), por exemplo), vamos usar o fato de que ela seja a planilha ativa, ou seja, ActiveSheet:
MsgBox "O nome: " & strNewName & " é invalido." & vbCrLf & _
"Um nome de planilha não pode
conter o caractere : " & strCara, vbCritical
If Planilha_Exist(ThisWorkbook.Name, strNewName) = True Then
"Este nome de planilha já é usado nesta pasta.", vbCritical
ThisWorkbook.Sheets.Add 'Ou: ThisWorkbook.Sheets("Plan1").Copy After:=Sheets(Sheets.Count)
O pacote Office 2013 traz dois métodos complementares. Trata-se da cópia de um intervalo de células de uma planilha para várias planilhas e do método Add2 para os NewLayouts das coleções de objetos gráficos.
Este método só está disponível a partir das versões do Office 2013. Você só quer copiar um intervalo de células da planilha "Plan1" para as planilhas "Plan3", "Plan5" e "recop". Para isso, você pode usar o método FillAcrossSheets:
Planilhas = Array("Plan3", "Plan5", "Plan7")
Sheets (Folhas).FillAcrossSheets Worksheets("Plan1").Range("A1:C5")
Os parâmetros deste método são:
Range (Intervalo): obrigatório
Tipo: opcional. Ele indica como copiar o intervalo e pode ter três valores:
xlFillWithAll: copia o conteúdo e os formatos.
xclFillWithContents: copia o conteúdo.
xlFillWithFormats: copia os formatos.
Disponível a partir do Office 2013. Este método está disponível apenas para as coleções de objetos gráficos e retorna um erro "Run Time" quando é usado com objetos "Sheets e WorkSheets". Não existe mais informação no site "Microsoft.com", exceto a sintaxe:
Expressão: .Add (Before, After, Count, NewLayout).
Expressão representa um objeto Worksheet.
Os parâmetros são idênticos aos do método Add, fora a substituição do Tipo pelo parâmetro NewLayout. Se NewLayout tem o valor true, o gráfico é inserido com as novas regras de layout dinâmico (o título e a legenda aparecem somente se houver várias séries.).
Sheets.add vba - Melhores respostas
Vba excel sheets.add - Melhores respostas
Modulo google sheets ✓ - Fórum - Microsoft Office
última linha vba - Dicas - Excel
Vba aguardar processamento - Dicas - Excel
Chamar macro vba - Dicas - Visual Basic
Vba imputbox - Dicas - Visual Basic
Este documento, intitulado 'Como adicionar uma folha em uma planilha no VBA', está disponível sob a licença Creative Commons. Você pode copiar e/ou modificar o conteúdo desta página com base nas condições estipuladas pela licença. Não se esqueça de creditar o CCM (br.ccm.net) ao utilizar este artigo.