Página 1 de 1

Dividir planilha muito grande e criar outras

Enviado: 28 Ago 2020 às 13:44
por matheusjc
Boa tarde amigos, procurei no forum e não encontrei algo que pudesse resolver meu problema.

Problema: Possuo uma planilha com 200 mil linhas e necessito importar para um programa especifico onde só consegue ler arquivos com no máximo 5000 linhas.

Necessito: Alguma formula/macro para poder dividr essa planilha em vários outras planilhas.

Tem como fazer isso?

Re: Dividir planilha muito grande e criar outras

Enviado: 28 Ago 2020 às 17:46
por osvaldomp
É viável via macro.

1. existe cabeçalho na planilha ? Se sim, cada nova planilha formada por 5 mil linhas também terá cabeçalho ?

2. quais as colunas ocupadas pelos dados ?

3. todas as colunas têm a mesma quantidade de linhas preenchidas ?

4. você quer todas as planilhas com 5 mil linhas em um único arquivo ou cada planilha um arquivo ?

Dividir planilha muito grande e criar outras

Enviado: 28 Ago 2020 às 20:08
por matheusjc
Boa noite Osvaldo.

1. Existe cabeço na planilha e gostaria q todas as planilhas que forem gerados viessem a planilha também.

2. A planilha possui 21 colunas

3. Algumas colunas estão vazias.

4. Então, necessitava de cada planilha em um arquivo, com no máximo 5 mil linhas em cada. Acredito que a última não terá os 5 mil.. mas as anteriores sim

Obrigado pela resposta

Re: Dividir planilha muito grande e criar outras

Enviado: 30 Ago 2020 às 10:21
por osvaldomp
Experimente o código abaixo.

1. eu perguntei "quais" colunas, no entanto você respondeu "quantas" colunas, então considerei que haverá dados da coluna A até a coluna U; não importa se houver colunas vazias; considerei que a coluna A sempre conterá dados e essa coluna terá a maior quantidade de linhas preenchidas

2. o comando ActiveWorkbook.SaveAs ... irá salvar cada novo arquivo na mesma pasta em que estiver salvo o arquivo que contiver a macro, altere se desejar; para desativar esse comando basta excluí-lo ou colocar um apóstrofo no início do comando; o nome de cada arquivo será Desmembrado diamês 001, sendo diamês o dia e o mês correntes, mais um número sequencial a partir de 001, altere se desejar, no entanto se você for desmembrar mais de um arquivo em bruto (com 200 mil linhas) em um mesmo dia então haverá duplicação de nome de arquivo, e nesse caso você precisa informar um novo critério para nomear os arquivos

3. o comando ActiveWorkbook.Close irá fechar cada novo arquivo após salvá-lo; para desativar esse comando basta excluí-lo ou colocar um apóstrofo no início do comando

4. se você não quiser salvar e fechar cada arquivo então poderá abrir a caixa de diálogo Salvar Como, para isto basta remover o apóstrofo inicial desta linha de comando ~~~> 'Application.Dialogs(xlDialogSaveAs).Show
Código: Selecionar todos
Sub GeraPlanilhas()
 Dim k As Long, ws As Worksheet, m As Long
  Application.ScreenUpdating = False
  With ActiveSheet
   For k = 2 To Cells(Rows.Count, 1).End(3).Row Step 4999
    Workbooks.Add
    Range("A1:U1").Value = .Range("A1:U1").Value
    .Cells(k, 1).Resize(4999, 21).Copy [A2]
    'Application.Dialogs(xlDialogSaveAs).Show
    m = m + 1
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Desmembrado " & Format(Date, "ddmmm") & " " & Format(m, "000") & ".xlsx"
    ActiveWorkbook.Close
   Next k
  End With
End Sub