Kioskea
Pesquisar
Faça uma pergunta »

Excel - Converter arquivos CSV em XLS

Março 2015



Como indicado no título, este aplicativo converte os arquivos CSV em XLS.

Não é necessário para o Excel 2007, já que este último faz a conversão, automaticamente.
A conversão não tendo paginação, em caso de alteração posterior dos arquivos XLS, os arquivos deverão ser salvos no formato do Excel utilizado, mas sem nenhuma dificuldade; basta clicar no SIM, na mensagem.

Já que várias subfunções serão revistas neste tutorial, elas serão repartidas em parágrafos.


Três modos de leitura disponíveis:
  • Em texto, a transcrição é literal.
  • Em padrão, os números são exibidos com os decimais de origem, formato obrigatório, se houver dados representando as horas, que são transcodificados com números com 6 decimais.
  • Em digital, todos com 3 decimais.


Para estes dois últimos modos, os formatos das células, como as com datas, devem ser reformatados.
  • Possibilidade de converter um arquivo específico ou todo o conteúdo de um diretório.
  • Possibilidade de salvar, automaticamente, no formato XLS.
  • Possibilidade de remover, automaticamente, os arquivos CSV

Preliminares


Abrir um fichário novo e renomeá-lo no Convertir Csv_xls.xls e colar um botão nele.

Abrir o IDE da VBA (Alt+F11)

Adicionar um « Userform », renomeá-lo csvxls e por os controles...

Uma trama >Caption = Operações, com
  • 1 OptionButton > Name = Um_Único_Arquivo > Value = True
  • 1 OptionButton > Name = ToutFich > Value = False

Uma trama > caption = Saída em, com...
  • 1 OptionButton > Name = Texte_Num > Value = True
  • 1 OptionButton > Name = OptNumeric > Value = False
  • 1 OptionButton > Name = Standard > Value = True
  • 1 CheckBox > Name = Salvar_XLS > Value = False
  • 1 CheckBox > Name = Remover_CVS > Value = False > Enabled = False
  • 1 CommandButton > Name = CommandButton1



Código na Planilha1



Private Sub CommandButton1_Click()    
     'Em Non Modale, é possível deixar o userform ser exibido  e   
     'Navegar na nova pasta.    
    csvxls.Show 0    
End Sub

Código no módulo do Userform


Private Sub CommandButton1_Click()    
    RemoverArquivo = Remover_CVS.Value    
    SalvarXLS = Salvar_XLS.Value    
        
    If Texte_Num.Value Then    
        TxtNum = 1    
    ElseIf OptNumeric Then    
        TxtNum = 2    
    Else    
        TxtNum = 3    
    End If    
        
    If Um_Único_Arquivo.Value = True Then    
    'Um único arquivo do diretório    
        If SelectionFichier() Then    
            ConvertiCvsXls    
        End If    
    Else    
    'Todo o diretório    
        ConvertiRep    
    End If    
End Sub    

Private Sub Salvar_XLS_Click()    
    Remover_CVS.Enabled = Salvar_XLS    
    If Not Salvar_XLS Then    
        Remover_CVS = False    
    End If    
End Sub

Código no Módulo1


Para adicionar um módulo >> Inserir >> Módulo (é a janela Módulo1)

Código no cabeçalho


Option Explicit    
Public Chemin As String    
Public Fichier As String    

Const Ext = "csv"    

'Determina se os arquivos do diretório serão removidos    
Public SuppFichier As Boolean    

'Determina se salva em XLS    
Public SauveXLS As Boolean    

'Determina  se todos os arquivos do diretório serão convertidos    
Public Tous As Boolean    

'Determina  a saída texto/Digital    
Public TxtNum As Integer

Ler todos os arquivos do diretório especificado


Sub ConvertiRep()    
Dim fs, F, f1, s, sf    
Dim i As Long, Fin As Long    
'-----------------------------------------------------------    
    'Selecionar o diretório    
    SelectionRep    
'-----------------------------------------------------------    
    Set fs = CreateObject("Scripting.FileSystemObject")    
    Set F = fs.GetFolder(Caminho)    
    Set sf = F.Files    
    For Each f1 In sf    
        If LCase(Right(f1.Name, 3)) = Ext Then    
            Fichier = f1.Name    
            ConvertiCvsXls    
        End If    
    Next    
End Sub

Converter um arquivo CVS em XLS


Sub ConvertiCvsXls()    
Dim TB    
Dim Lig As Long, i As Integer, AncNom As String    
    AncNom = Arquivo    
    If Right(Caminho, 1) <> "" Then Caminho = Caminho & ""    
    Workbooks.Open Filename:=Caminho & Arquivo   
    Application.DisplayAlerts = False    
    Application.ScreenUpdating = False    
    With ActiveSheet    
        Select Case TxtNum    
        Casa 1    
            .Cells.NumberFormat = "@"    
        Casa 2    
            .Cells.NumberFormat = "0.000"    
        Casa 3    
            .Cells.NumberFormat = "General"    
        End Select    
        For Lig = 1 To Range("A65536").End(xlUp).Row    
'Trocar a  , (vírgula) pelo separador do seu arquivo    
            TB = Split(.Cells(Lig, 1), ",")    
            For i = 0 To UBound(TB) - 1    
                .Cells(Lig, i + 1) = TB(i)    
            Next i    
        Next Lig    
    End With    
    If SauveXLS Then    
        Arquivo = Left(Arquivo, Len(Arquivo) - 3) & "xls"    
        If Dir(Caminho & Arquivo) = "" Then    
            'o arquivo xls ainda não existe    
            ActiveWorkbook.SaveAs Caminho & Arquivo, FileFormat:=xlExcel9795 'até 2000    
            Workbooks(Arquivo).Close SaveChanges:=False    
        Else    
            'o arquivo xls existe, ver se o comprimimos sem cometer erros.    
            If MsgBox("O arquivo " & Arquivo & "já existe" & Chr(13) _    
            & "Comprimí-lo ?", vbQuestion + vbYesNo, "Comprimir arquivo") = 6 Then    
                Application.DisplayAlerts = False    
                ActiveWorkbook.SaveAs Caminho & Arquivo, FileFormat:=xlExcel9795 'até 2000    
                Workbooks(Fichier).Close SaveChanges:=False    
                Application.DisplayAlerts = True    
            ElseIf Tous Then    
                'Evitar a sobrecarga da pasta se todos os arquivos    
                Workbooks(AncNom).Close SaveChanges:=False    
            Else    
                Application.ScreenUpdating = True    
                Application.DisplayAlerts = True    
                Exit Sub    
            End If    
        End If    
    End If    
    If RemoverArquivo Then    
        'remove o arquivo cvs    
        Kill Chemin & AncNom    
    End If    
    Application.DisplayAlerts = True    
    Application.ScreenUpdating = True    
End Sub

Selecionar o caminho através da caixa de diálogo


Sub SelectionRep()    
Const ssfTous = &H1    
Dim objShell As Object, objFolder As Object, oFolderItem As Object    
    Set objShell = CreateObject("Shell.Application")    
    Set objFolder = objShell.BrowseForFolder(&H0&, "Escolher um diretório", ssfTodos)    
    Set oFolderItem = objFolder.Items.Item    
    Caminho = oFolderItem.Path    
    Set objShell = Nothing    
    Set objFolder = Nothing    
    Set oFolderItem = Nothing    
End Sub

Selecionar um arquivo através da caixa de diálogo


Function SelectionArquivo() As Boolean    
Dim nomfich As String, i As Integer    
    nomfich = Application.GetOpenFilename(FileFilter:="(*.csv),*.csv" _    
            , Title:="Selecionar o arquivo a ser convertido")    
    If nomfich = "Falso" Then 'seleção não feita    
        Exit Function    
    End If    
    For i = Len(nomearquivo) To 2 Step -1    
        If Mid(nomearquivo, i, 1) = "" Then Exit For    
    Next i    
    Caminho = Left(nomearquivo, i)    
    Arquivo = Mid(nomearquivo, i + 1)    
    SelectionArquivo = True    
End Function

Download


Você pode baixar a pasta neste site:
Pasta de conversão(em francês)


Tradução feita por Lucia Maurity y Nouira
Para uma leitura offline, é possível baixar gratuitamente este artigo no formato PDF:
Excel-converter-arquivos-csv-em-xls.pdf

A ver igualmente

Na mesma categoria

Excel - Convertir fichier(s) CSV / XLS
Por lermite222 em 13 de fevereiro de 2009
Artigo original publicado por lermite222. Tradução feita por pintuda.
Este documento, intitulado « Excel - Converter arquivos CSV em XLS »a partir de Kioskea (pt.kioskea.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.