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.

Artigo Anterior Próximo Artigo

Principais Dicas