Note: The other languages of the website are Google-translated. Back to English

Como converter em lote vários arquivos CSV em arquivos XLS (X) no Excel?

Converter um arquivo CSV em arquivo XlS ou XLSX é muito fácil aplicando o recurso Salvar como. No entanto, converter vários arquivos CSV em arquivos XLS ou XLSX de uma pasta é demorado, pois é preciso salvar manualmente um por um. Aqui, apresento um código de macro para converter em lote rapidamente todos os arquivos CSV em arquivos XLS (x) de uma pasta.

Converta em lote arquivos CSV em arquivos XlS (X) com código de macro


Converta em lote arquivos CSV em arquivos XlS (X) com código de macro

Para converter vários arquivos CSV de uma pasta em arquivos XLS (X), você pode seguir as etapas abaixo:

1. Habilite uma nova pasta de trabalho, pressione Alt + F11 chaves para abrir Microsoft Visual Basic para Aplicações janela e clique inserção > Módulo. Veja a imagem:
doc converter lote cvs xls 1

Nota: Certifique-se de que todos os arquivos CSV que você deseja converter estejam fechados.

2. Em seguida, cole o código da macro abaixo no Módulo script e pressione F5 chave para executar o código.

VBA: converter CSV em XLS

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlNormal
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

3. Na caixa de diálogo que aparece, selecione a pasta especificada contendo os arquivos CSV que você deseja converter. Veja a imagem:
doc converter lote cvs xls 2

4. Clique OK, todos os arquivos CSV na pasta selecionada foram convertidos em arquivos XLS nela.
doc converter lote cvs xls 3

Dica: Se você deseja converter arquivos CSV em arquivos XLSX, use o código VBA abaixo.

VBA: converter arquivos CSV para XLSX

Sub CSVtoXLS()
'UpdatebyExtendoffice20170814
    Dim xFd As FileDialog
    Dim xSPath As String
    Dim xCSVFile As String
    Dim xWsheet As String
    Application.DisplayAlerts = False
    Application.StatusBar = True
    xWsheet = ActiveWorkbook.Name
    Set xFd = Application.FileDialog(msoFileDialogFolderPicker)
    xFd.Title = "Select a folder:"
    If xFd.Show = -1 Then
        xSPath = xFd.SelectedItems(1)
    Else
        Exit Sub
    End If
    If Right(xSPath, 1) <> "\" Then xSPath = xSPath + "\"
    xCSVFile = Dir(xSPath & "*.csv")
    Do While xCSVFile <> ""
        Application.StatusBar = "Converting: " & xCSVFile
        Workbooks.Open Filename:=xSPath & xCSVFile
        ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault
        ActiveWorkbook.Close
        Windows(xWsheet).Activate
        xCSVFile = Dir
    Loop
    Application.StatusBar = False
    Application.DisplayAlerts = True
End Sub

converter ou exportar rapidamente um intervalo de uma folha para separar arquivos XLS / Word / PDF ou outros formatos de uma vez

Normalmente, o Excel não oferece a opção de exportar ou salvar rapidamente um intervalo como um arquivo CSV ou Excel. Se você deseja salvar um intervalo de dados como um CSV ou pasta de trabalho no Excel, pode ser necessário usar uma macro VBA para fazer isso ou copiar o intervalo para a área de transferência e colá-lo em uma nova pasta de trabalho e salvar a pasta de trabalho como CSV ou Livro de exercícios. Kutools for Excel aumenta o Excel com Exportar intervalo para arquivo utilitário para usuários do Excel que desejam processar rapidamente as seguintes operações:  Clique para 30teste gratuito completo de um dia!
doc exportar intervalo de células para arquivo
 
Kutools for Excel: com mais de 300 suplementos práticos do Excel, grátis para experimentar sem limitação em 30 dias.

Artigos relativos:


As melhores ferramentas de produtividade para escritório

O Kutools for Excel resolve a maioria dos seus problemas e aumenta sua produtividade em 80%

  • armadilha para peixes: Insira rapidamente fórmulas complexas, gráficos e qualquer coisa que você tenha usado antes; Criptografar células com senha; Criar lista de discussão e enviar emails ...
  • Barra Super Fórmula (edite facilmente várias linhas de texto e fórmula); Layout de leitura (ler e editar facilmente um grande número de células); Colar na faixa filtrada...
  • Mesclar células / linhas / colunas sem perder dados; Dividir o conteúdo das células; Combinar linhas / colunas duplicadas... Evite células duplicadas; Comparar intervalos...
  • Selecione Duplicado ou Único Linhas; Selecione linhas em branco (todas as células estão vazias); Super Find e Fuzzy Find em muitos livros; Seleção aleatória ...
  • Cópia exata Várias células sem alterar a referência da fórmula; Criação automática de referências para várias folhas; Inserir marcadores, Caixas de seleção e mais ...
  • Extrair Texto, Adicionar texto, remover por posição, Remover Espaço; Criar e imprimir subtotais de paginação; Converter entre conteúdo de células e comentários...
  • Super Filtro (salvar e aplicar esquemas de filtro a outras planilhas); Classificação Avançada por mês / semana / dia, frequência e mais; Filtro Especial por negrito, itálico ...
  • Combine pastas de trabalho e planilhas; Mesclar tabelas com base em colunas-chave; Divida os dados em várias folhas; Conversão em lote de xls, xlsx e PDF...
  • Mais de 300 recursos poderosos. Suporta Office / Excel 2007-2021 e 365. Suporta todos os idiomas. Fácil implantação em sua empresa ou organização. Recursos completos de avaliação gratuita de 30 dias. Garantia de devolução do dinheiro em 60 dias.
guia kte 201905

Guia do Office traz interface com guias para o Office e torna seu trabalho muito mais fácil

  • Habilite a edição e leitura com guias em Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
  • Abra e crie vários documentos em novas guias da mesma janela, em vez de em novas janelas.
  • Aumenta sua produtividade em 50% e reduz centenas de cliques do mouse para você todos os dias!
parte inferior da aba do escritório
Comentários (38)
Ainda não há classificações. Seja o primeiro a avaliar!
Este comentário foi feito pelo moderador no site
Eu quero fazer o oposto - converter XLS para CSV. esse roteiro funciona?
SubCSVtoXLS()
'Atualizar porExtendoffice20170814
Dim xFd As FileDialog
Dim xSPath como String
Dim xXLSFile As String
Dim xWsheet As String
Application.DisplayAlerts = False
Application.StatusBar = Verdadeiro
xWsheet = ActiveWorkbook.Name
Definir xFd = Application.FileDialog(msoFileDialogFolderPicker)
xFd.Title = "Selecione uma pasta:"
Se xFd.Show = -1 Então
xSPath = xFd.SelectedItems(1)
Outro
Exit Sub
Se acabar
If Right(xSPath, 1) <> "\" Então xSPath = xSPath + "\"
xXLSFile = Dir(xSPath & "*.xls")
Faça enquanto xXLSFile <> ""
Application.StatusBar = "Convertendo: " & xXLSFile
Workbooks.Open Filename:=xSPath & xXLSFile
ActiveWorkbook.SaveAs Replace(xSPath & xXLSFile, ".xls", ".csv", vbTextCompare), xlNormal
ActiveWorkbook.Close
Windows(xWsheet). Ativar
xXLSFile = Dir
laço
Application.StatusBar = Falso
Application.DisplayAlerts = Verdadeiro
End Sub
Este comentário foi feito pelo moderador no site
Sub ConverterCSVToXlsx()



Dim myfile As String

Dim oldfname como string, newfname como string

Escurecer arquivo de trabalho

Dim folderName As String



Application.DisplayAlerts = False

Application.ScreenUpdating = False



' Captura o nome do arquivo atual

meuarquivo = ActiveWorkbook.Name



'Define o nome da pasta para trabalhar

nomedapasta = "D:\tmp\"



' Percorre todos os arquivos CSV na pasta

workfile = Dir(folderName & "*.CSV")

Do While arquivo de trabalho <> ""

'Abre o arquivo CSV

Workbooks.Open Filename:=folderName & workfile

' Captura o nome do arquivo CSV antigo

oldfname = ActiveWorkbook.FullName

' Converte para XLSX

newfname = folderName & Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4) & ".xlsx"

ActiveWorkbook.SaveAs Nome do arquivo:=newfname, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=True

ActiveWorkbook.Close

'Deleta o arquivo CSV antigo

Matar nome antigo

Windows(meuarquivo). Ativar

arquivo de trabalho = Dir()

laço



Application.DisplayAlerts = Verdadeiro

Application.ScreenUpdating = True



End Sub
Este comentário foi feito pelo moderador no site
"Dica: Se você deseja converter arquivos CSV para arquivos XLXS, basta alterar .xls para .xlsx na macro ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare)."

Eu tentei isso e o Excel não conseguiu abrir os arquivos resultantes. Recebi a seguinte mensagem: "O Excel não pode abrir o arquivo 'filename.xlsx' porque o formato ou a extensão do arquivo não é válido. Verifique se o arquivo não foi corrompido e se a extensão do arquivo corresponde ao formato do arquivo."

No entanto, o script foi bem-sucedido na conversão para .xls.
Este comentário foi feito pelo moderador no site
Eu não encontrei esse problema antes, obrigado pelo seu comentário correto. Já corrigi a dica.
Este comentário foi feito pelo moderador no site

Este comentário foi feito pelo moderador no site
Muito obrigado pelo seu excelente script para CSV para XLS. É muito mais útil para o meu trabalho
Este comentário foi feito pelo moderador no site
Oi,

Seu script é ótimo, mas não converte o csv separado por ponto e vírgula. Você pode por favor postar uma solução para eles?

Obrigado
Este comentário foi feito pelo moderador no site
Desculpe, aqui não tenho nenhuma solução, talvez você possa colocar sua dúvida em nosso fórum, alguém pode ajudá-lo. https://www.extendoffice.com/forum.html
Este comentário foi feito pelo moderador no site
posso estar atrasado, acabei de receber o problema em que precisava converter os arquivos CSV de ponto e vírgula e adicionei isso ao código e funcionou, espero que isso ajude alguém

Alterar 'Workbooks.Open Filename:=xSPath & xCSVFile' Por este 'Workbooks.Open Filename:=xSPath & xCSVFile, Delimiter:=";", Local:=True'
Este comentário foi feito pelo moderador no site
Usei o arquivo multiple csv para vários xls, mas errei os arquivos xls de csv; informações separadas, mas se juntam em células. Como isso pode ser resolvido?
Este comentário foi feito pelo moderador no site
O código não pode suportar o arquivo csv de vírgula separado.
Este comentário foi feito pelo moderador no site
Quando dei o nome da pasta, o programa disse: "Nenhum arquivo corresponde à sua pesquisa". Mas há 2,609 arquivos .csv na pasta
Este comentário foi feito pelo moderador no site
O código não suporta o arquivo csv por vírgula separado, seus arquivos estão neste caso?
Este comentário foi feito pelo moderador no site
Olá,

um ótimo artigo - obrigado! Quase funciona para mim.

Aqui está o problema: eu tenho um arquivo csv delimitado por pipe. Alterei o delimitador padrão do Windows (através do painel de controle/configurações regionais) para "|". Então, quando eu abro o arquivo csv com o Excel, ele abre, lê diretamente e analisa os campos para colunas corretamente. Tudo o que tenho que fazer é salvar como xls ou xlsx, feito. Quando olho para o seu código, deve ser isso que o código faz: ele abre os arquivos csv em uma pasta, os salva como xls ou xlsx e faz um loop sobre isso.

Aqui está o problema: quando abro esses arquivos do Excel, os delimitadores de barra vertical ainda estão lá, nada é analisado nas colunas. Esse era o comportamento como antes da minha alteração na configuração padrão delimitada por pipe nas configurações do Windows. Portanto, parece que o Excel não usa essas configurações do Windows. Verifiquei isso substituindo os delimitadores de barra vertical por delimitadores de vírgula em uma cópia do arquivo - dos dois arquivos, o delimitado por barra vertical permaneceu não analisado, o delimitado por vírgula foi convertido muito bem.

Alguma idéia de onde essa delimitação de vírgula embutida no Excel pode ser encontrada ou alterada, ou se existe uma maneira no código de fazer isso? Eu preferiria NÃO ter que fazer uma pesquisa e substituir, depois salvar ...

Obrigado, HC
Este comentário foi feito pelo moderador no site
Se você quiser dividir os dados em coluna com base no delimitador de barra vertical no Excel, basta usar a função Text to Columns para dividir os dados por / depois de converter os arquivos csv para xls.
Este comentário foi feito pelo moderador no site
Realmente não torna o código útil para arquivos do Excel.
Este comentário foi feito pelo moderador no site
Oi, ótimo script que funcionou para mim depois de tentar todos os outros scripts disponíveis no google. Eu adicionei mais algumas linhas que executam o texto para a operação de colunas que eu quero. Alguém pode me ajudar como modificar o script especificando o local da pasta na unidade local em vez de abrir a caixa de diálogo, pois estou automatizando o sistema
. desde já, obrigado
Este comentário foi feito pelo moderador no site
Hi
Você poderia compartilhar o script que executa o texto para as colunas??
Cumprimentos
Este comentário foi feito pelo moderador no site
Ótimo script depois de pesquisar todos os outros scripts disponíveis no google. Alguém pode ajudar como modificar este script especificando um local de pasta na unidade local em vez de permitir que ele abra a caixa de diálogo, pois estou automatizando o sistema. desde já, obrigado
Este comentário foi feito pelo moderador no site
Codigo legal. Muito útil. Se não me engano, o código para .xlsx é igual ao código .xls.

Está linha:
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault

Suponho que deveria ser: ".csv" , ".xlsx", vbTextCompare etc.
Este comentário foi feito pelo moderador no site
Alterei o código assim, descrito acima; agora o script funciona como esperado: ele gera arquivos xlsx
Este comentário foi feito pelo moderador no site
não você não tem. ainda diz xls em ambas as versões.
Este comentário foi feito pelo moderador no site
esta macro não mostra meu arquivo csv
Este comentário foi feito pelo moderador no site
Um pequeno problema com esse código é que alguma precisão (número de decimais) pode ser perdida ao abrir um csv e salvá-lo como xlsx.
A maneira de evitar isso é selecionar todas as células logo após a abertura, definir o número de casas decimais para o valor desejado (15 para mim pessoalmente) e *depois* salvar como xlsx

Caso contrário, o xlsx tem menos detalhes (menos precisão em termos de decimais) do que o csv original, o que pode levar a problemas em algumas aplicações
Este comentário foi feito pelo moderador no site
ele altera meu formato de coluna de data de dd-mm-aaaa para dd/mm/aaaa, por favor, alguém pode ajudar com como impedir que esse script altere os formatos de coluna.
Muito obrigado.
Este comentário foi feito pelo moderador no site
Oi, viper, após a conversão, você pode formatá-los novamente, selecionar as datas e clicar com o botão direito do mouse para escolher Formatar células no menu de contexto, na caixa de diálogo Formatar célula, na guia Número, clique em Personalizar na lista Categoria e digite mm-dd- aaaa na caixa de texto na seção direita. Ou, se você tiver o Kutools for Excel, aplique a formatação de data de aplicação para alterar o formato de data conforme necessário.
Este comentário foi feito pelo moderador no site
ótimo artigo. Como posso salvar todos os arquivos convertidos em um novo local? Você pode atualizar o código e me enviar. Como permitir que o usuário escolha sua pasta de destino.


obrigado
Este comentário foi feito pelo moderador no site
Você tem um erro na linha 22 do csv para xlsx
Com erro - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xls", vbTextCompare), xlWorkbookDefault
Corrigido - ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xslx", vbTextCompare), xlWorkbookDefault
Este comentário foi feito pelo moderador no site
Obrigado por seu lembrete, eu atualizei, obrigado novamente.
Este comentário foi feito pelo moderador no site
Eu recebo um erro "Variável de objeto ou com variável de bloco não definida" para esta linha:
xFd.Title = "/Users/[my.name]/Documents/[myFolder]" >> este é o caminho de uma pasta específica no meu computador onde estou fazendo a conversão (a pasta tem vários arquivos csv dentro )

Estou fazendo algo errado aqui?
Este comentário foi feito pelo moderador no site
Isso está funcionando para mim, mas a extensão do arquivo não está mudando. Alguma dica?
Este comentário foi feito pelo moderador no site
O mesmo para mim - todos os arquivos permanecem .csv.
Este comentário foi feito pelo moderador no site
Todos os arquivos csv escolhidos foram salvos como novos arquivos excel, os arquivos originais (csv) não mudam, existem novos arquivos excel com o mesmo conteúdo existente.
Este comentário foi feito pelo moderador no site
Eu tive o mesmo problema. Se o seu arquivo de origem tiver uma extensão em letras maiúsculas (.CSV), ele não funcionará. Basta substituir .csv por .CSV no código na linha 22 e então deve funcionar. Bem, pelo menos para mim foi.
Este comentário foi feito pelo moderador no site
Como eu incorporaria o código na rotina de arquivos em lote XLSX para separar os dados por ponto e vírgula em colunas separadas? O código compartilhado converte o arquivo de .csv para .xlsx, mas não separa os dados em colunas separadas.
Este comentário foi feito pelo moderador no site
sim não é trabalho.
Este comentário foi feito pelo moderador no site
Buenos dias companheiros

Adicionando ao script, quisiera poder converter imediatamente o texto em colunas, para a opção que não é delimitado por nenhum tipo de caractere, adicionalmente os tamanhos das colunas são diferentes. Vale a pena esclarecer que se tomo cada arquivo por separado e aplicar a opção de texto em colunas, bajo esa opção los puedo convertir sin problemas, abre um por um, pero si pegue esa macro y le aplico la misma macro a todos, inclusive usando a opção de "USAR REFERENCIAS RELATIVAS", não hace el proceso apply bien, porque el graba as posições de la delimitación del archivo que usa de ejemplo, pero necesito que lo cada nuevo a cada archivo, es decir, como si abriera archivo nuevo y le hicieración manualmente la opción de delimitación y não aplique os valores de uuciación de la coluna identificada no arquivo e jemplo.

Você pode inserir uma opção neste arquivo, sem embargo passar para o que indica nas linhas arriba, só requer saber como pode fazer para aplicar a conversão a cada arquivo, aplicando a delimitação do campo como sua fuera un archivo nuevo.


Workbooks.Open Filename:=xSPath & xCSVFile
ActiveWorkbook.SaveAs Replace(xSPath & xCSVFile, ".csv", ".xlsx", vbTextCompare), xlWorkbookDefault

ESTA PARTE ES LA QUE AGREGUE APLICANDO EL FORMATO DEL TEXTO A COLUNAS

StartRow:=1, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 1), Array(18 _
, 1), Array(38, 1)), TrailingMinusNumbers:=True
ActiveCell.Cells.Select
ActiveCell.Cells.EntireColumn.AutoFit
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveWorkbook.Save

HASTA AQUI CONCORDA VOCÊ

ActiveWorkbook.Close
Windows(xWsheet). Ativar
xCSVFile = Dir

laço
Application.StatusBar = Falso
Application.DisplayAlerts = Verdadeiro
End Sub

No se si me hago explicar bien, pero es mi problema.
Não há comentários postados aqui ainda
carregar mais
Deixe o seu comentário
Postando como convidado
×
Avalie esta postagem:
0   Personagens
Locais sugeridos

Siga-nos

Copyright © 2009 - www.extendoffice.com. | Todos os direitos reservados. Distribuído por ExtendOffice. | | | Mapa do site
Microsoft e o logotipo do Office são marcas comerciais ou marcas registradas da Microsoft Corporation nos Estados Unidos e / ou em outros países.
Protegido por Sectigo SSL