Ir ao conteúdo
  • Cadastre-se

alexandre_toscano

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

Reputação

0
  1. Prezados, ainda estou engatinhando com VBA e preciso muito de uma ajuda. Estou tentando aprender macro para automatizar uma planilha no trabalho. Considerando que tenho uma pasta de trabalho com esses códigos vba, na primeira worksheet há uma tabela (intervalo formatado como tabela) que não deverá ser alterada em momento algum (colunas A:AK). Essa tabela tem algumas fórmulas vinculadas à uma outra tabela na mesma worksheet e que começa na coluna AN (intervalo também formatado como tabela). Ao clicar num botão de comando, selecionarei uma base de dados externa que todo o seu conteúdo, exceto o cabeçalho, será copiado e colado na tabela que começa na coluna AN (mencionado acima), na primeira linha após o cabeçalho (cabeçalho em AN2). Após isso, a macro me mostrará um pop up para "salvar como" e indicarei o nome do arquivo e o destino para salvar um novo arquivo sem o botão de comando inicial. Portanto, baseado nessas informações, preciso: 1 - Copiar os dados de um arquivo de excel (base de dados externa que será selecionada através do botão de comando), de forma que a macro selecione apenas o intervalo com os dados, com exceção do cabeçalho, e não copie toda a worksheet; 2 - apagar todo o conteúdo da tabela (intervalo formatado como tabela, cujo nome é BaseModificada), da coluna AN até a coluna CG), mantendo o cabeçalho; 3 - colar esses dados do item 1 na tabela BaseModificada, logo abaixo do cabeçalho; 4 - abrir um pop up de "salvar como" para que eu selecione o destino e indique o nome do arquivo a ser salvo sem o botão de comando. Segue o código que consegui até agora. O que não estou conseguindo é não deletar o conteúdo da tabela que começa na coluna A, nem colar a base de dados na tabela que começa na coluna AN, mantendo o cabeçalho. ------------------------------------------------------------------------------ Option Explicit Private Sub btExecuta_Click() Application.ScreenUpdating = False 'definir variáveis '---------------------------------------- Dim w As Worksheet Dim WNew As Workbook Dim ArqParaAbrir As Variant Dim A As Integer Dim NomeArquivo As String Dim CaixaDialogo As FileDialog 'capturar arquivos para tratamento '---------------------------------------- ArqParaAbrir = Application.GetOpenFilename("Arquivo Excel (*.xlsx),*.xl*", _ Title:="Selecione a base para verificação", _ MultiSelect:=True) If Not IsArray(ArqParaAbrir) Then If ArqParaAbrir = "" Or ArqParaAbrir = False Then MsgBox "Nenhum arquivo selecionado", vbOKOnly, "Processo cancelado" Exit Sub End If End If 'começa a importação dos dados '---------------------------------------- Set w = Sheets("Planilha1") w.UsedRange.EntireColumn.Delete w.Select 'Loop para importação do arquivo '---------------------------------------- For A = LBound(ArqParaAbrir) To UBound(ArqParaAbrir) NomeArquivo = ArqParaAbrir(A) Application.Workbooks.Open (NomeArquivo) Set WNew = ActiveWorkbook ActiveSheet.Range("am3").CurrentRegion.Select Selection.Copy Destination:=w.Cells(w.Rows.Count, 1).End(xlUp).Offset(1, 0) Application.DisplayAlerts = False ActiveWorkbook.Close SaveChanges:=False Application.DisplayAlerts = False w.Cells(w.Rows.Count, 1).End(xlUp).Offset(1, 0).Select Next A 'mostra a tela de salvar como '---------------------------------------- Set CaixaDialogo = Application.FileDialog(msoFileDialogSaveAs) With CaixaDialogo .Show .Execute End With ActiveWorkbook.Close SaveChanges:=True End Sub -----------------------------------------------------------------------------------------

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...