Como se pode "dividir" um arquivo do Excel (.xlsx) que contém várias planilhas em planilhas separadas [n] .xlsx?


17

Penso que o título diz tudo para esta questão, mas para elaborar um pouco mais:

Eu tenho um arquivo .xlsx que contém algumas dezenas de folhas. Quero exibir todas essas folhas como arquivos .xlsx separados. A nomeação automatizada deles não é necessária. O Excel tem uma função para exportar folhas para um arquivo separado?

Respostas:


17

Não é um recurso interno.

No entanto, se você executar esse código, ele deverá fazer o trabalho.

Sub SaveSheets()
    Dim strPath As String
    Dim ws As Worksheet

    Application.ScreenUpdating = False

    strPath = ActiveWorkbook.Path & "\"
    For Each ws In ThisWorkbook.Sheets
        ws.Copy
        'Use this line if you want to break any links:
        BreakLinks Workbooks(Workbooks.Count)
        Workbooks(Workbooks.Count).Close True, strPath & ws.Name & ".xlsx"
    Next

    Application.ScreenUpdating = True
End Sub

Sub BreakLinks(wb As Workbook)
    Dim lnk As Variant
    For Each lnk In wb.LinkSources(xlExcelLinks)
        wb.BreakLink lnk, xlLinkTypeExcelLinks
    Next
End Sub

Para executar o código, faça o seguinte:

  1. Abra o editor do VBA ( Alt+ F11)
  2. Na árvore no canto superior esquerdo, clique com o botão direito do mouse na pasta de trabalho e insira um novo módulo
  3. Copie o código acima para este módulo
  4. Feche o editor VBA
  5. No Excel, pressione Alt+ F8para executar macros e selecioneSaveSheets

ou consulte Como adiciono o VBA no MS Office?


Obrigado! E o inverso? - juntá-lo novamente? Esse arquivo do Excel aparentemente continha "links" (eu não usei esse recurso antes) e, após a divisão do Excel, não é possível encontrar os links (está procurando a primeira folha); existe para separá-los e atualizar os links ao mesmo tempo / ou apenas atualizar os links?
eichoa3I

1
a questão é como você deseja lidar com os links. Você pode facilmente substituí-los por valores, inserindo Workbooks(Workbooks.Count).BreakLinksdepois ws.Copy...
Peter Albert

Depois que eu abri uma pasta de trabalho, uma janela pop-up no Excel me solicitou a correção dos links; Eu cliquei nessa caixa de diálogo e agora os links funcionam para todos os arquivos. Eu estou querendo saber que se este foi guardado no arquivo ou localmente ...
eichoa3I

Quando você diz substituí-los por valores por Pastas de trabalho (Workbooks.Coun) .BreakLinks, os links são excluídos ou ...? Eu acho que a melhor maneira de lidar com eles é simplesmente acabar com eles (ou seja, quando os usuários abrem os arquivos excel agora separados, eles não vêem o aviso sobre links quebrados).
precisa saber é o seguinte

Desculpe, tentar Workbooks(Workbooks.Count).BreakLink- sem s, no final
Peter Albert

11
  1. Quando você clica com o botão direito do mouse na guia de uma planilha do Excel, pode selecionar Mover ou Copiar ...

    insira a descrição da imagem aqui

  2. Na caixa de diálogo resultante, você pode selecionar um caderno de trabalho de destino. Selecione (novo livro) .

    insira a descrição da imagem aqui

  3. Clique em OK . Sua planilha agora está dentro de um novo documento.


8

Tentei a solução de Peter Albert e ela não funcionou para mim, então encontrei uma solução nesta postagem (“Excel - salve planilhas em arquivos separados”) no Diário de um geek de computador .

Isso funciona muito bem. Você deve renomear folhas que contêm pontos para obter arquivos nomeados corretamente com .xlsextensões.

Sub CreateNewWBS()
Dim wbThis As Workbook
Dim wbNew As Workbook
Dim ws As Worksheet
Dim strFilename As String

    Set wbThis = ThisWorkbook
    For Each ws In wbThis.Worksheets
        strFilename = wbThis.Path & "/" & ws.Name
        ws.Copy
        Set wbNew = ActiveWorkbook
        wbNew.SaveAs strFilename
        wbNew.Close
    Next ws
End Sub

Use as instruções para criar e executar essa macro na postagem de Peter Albert ou em Como adiciono o VBA no MS Office?


1
Eu também tentei a solução de Peter Albert e houve um erro "error'13' run-time: Incompatibilidade de tipo Felizmente a solução nesta resposta funciona para mim..
Bin

como posso substituir os arquivos existentes com o mesmo nome?
DAE

Eu não precisava disso porque cada despejo entra em uma pasta separada. Talvez tente esta discussão #
11007 hrvoj3e

Sua solução funcionou para mim :)
Muhammad Waheed
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.