Tag Archives: Exportar

VBA – Exportar Planilha para TXT

Nascido das mãos do colega Rafael do nosso fórum, o código abaixo realiza a exportação de uma planilha ativa no Excel para um arquivo Texto:

Sub Exportar()
    Application.DisplayAlerts = False
 
    template_file = ActiveWorkbook.FullName
 
    fileSaveName = Application.GetSaveAsFilename( _
                   InitialFileName:="C:\users" + _
                                    VBA.Strings.Format(Now, "mmddyyyy") + ".txt", _
                   fileFilter:="Text Files (*.txt), *.txt")
 
    If fileSaveName = False Then
        Exit Sub
    End If
 
    'cria uma cópia da pasta de trabalho atual da planilha atual
    Dim newBook As Workbook
    Dim plan As Worksheet
    Set newBook = Workbooks.Add
 
    ThisWorkbook.ActiveSheet.Copy Before:=newBook.Sheets(1)
 
    'exclui as demais planilhas
    For Each plan In newBook.Sheets
        If plan.Name <> ActiveSheet.Name Then
            newBook.Worksheets(plan.Index).Delete
        End If
    Next
 
    newBook.SaveAs Filename:= _
                          fileSaveName, FileFormat:=xlTextWindows, _
                          CreateBackup:=False
 
    'fecha a pasta de trabalho gerada
    newBook.Close SaveChanges:=True
    Set newBook = Nothing
 
    MsgBox "O arquivo foi exportado com sucesso! ", vbInformation, "Exportar arquivos"
 
End Sub

A parte bacana deste código é não necessidade de utilizar ou precisar conhecer de manipulação de arquivos, uma vez que estamos utilizando o “Salvar Como” arquivo texto. Fica bem mais fácil de customizar!

O link original do código do fórum pode ser visto aqui:

https://www.tomasvasquez.com.br/forum/viewtopic.php?t=1651&p=8162

Bom proveito!

Excel – Conversão para arquivo CSV

O que é

O CSV é um implementação particular de arquivos de texto separados por um delimitador, que usa a vírgula e a quebra de linha para separar os valores. O formato também usa as aspas em campos no qual são usados os caracteres reservados (vírgula e quebra de linha). Essa robustez no formato torna o CSV mais amplo que outros formatos digitais do mesmo segmento.

O tornou-se uma alternativa mais estruturada frente aos arquivos textos tradicionais e binários, usados em aplicações legadas, geralmente escritas em C, C++ e outras linguagens da época. Esse formato não segue o formalismo de apresentação de arquivos separados por tabulação, sendo mais direcionados para troca de dados entre sistemas.

Exemplo

O Excel suporta nativamente leitura de arquivos no formato CSV. Um arquivo CSV em um computador Windows com o Excel instalado geralmente aparece da seguinte forma:

conversaocvs1

Este arquivo aberto no bloco de notas tem o seguinte formato:

conversaocvs4

Abra este arquivo no Microsoft Excel para ver o resultado:

conversaocvs2

Abrir o arquivo pode ser feito tanto pelo Windows como através da caixa de diálogo Arquivo->Abrir, selecionando na caixa Arquivos do Tipo a opção “Arquivos de texto (*.prn;*.txt;*.csv)”. A edição do arquivo transcorre normalmente. Porém, ao tentar salvá-lo, o Excel apresenta a seguinte mensagem:

conversaocvs3

Naturalmente como em arquivos texto, ao tentar salva os dados no formato CSV, este não poderá manter funcionalidades como fórmulas e outros recursos disponibilizados pelo Microsoft Excel. Também da mesma forma que faz com arquivos XML, o Excel trabalha com o arquivo desvinculado, ou seja, ele faz uma importação dos dados do arquivo CSV para possibilitar o trabalho dentro de uma planilha, sendo necessário salvá-lo explicitamente como CSV porteriormente.

Da mesma forma que importa, o Excel também exporta arquivos para o formato CSV, seguindo as mesmas regras de limitação já descritas.

Para fazê-lo, crie o seguinte arquivo no Excel:

conversaocvs6

Para salvar este arquivo como CSV, vá até o menu Arquivo->Savlar como. Na caixa salvar como tipo, selecione a opção CSV (separado por vírgulas) (*.csv).

conversaocvs7

Dê o nome de arquivo e salve-o em alguma pasta de seu disco. Abrir este arquivo no bloco de notas nos mostrará o seguinte resultado:

conversaocvs5

Conclusão

Desta forma, vemos que o Excel possibilita o trabalho completo com arquivos CSV. Ainda é comum encontrar sistemas que trabalham com este tipo de arquivo, ou até mesmo sistemas atuais. Aplicativos de WebMail por exemplo, costumam exportar listas de contato para arquivos o tipo CSV.

Este também pode ser uma opção para transmitir informações para outros usuários que por ventura não possuam o Microsoft Excel instalado.

Importando e Exportando dados do Excel para o SQL Server com VBA

Aproveitando a pergunta de um colega, deixo aqui a resposta que se mostra uma das formas de recuperar e inserir dados do Excel para o SQL Server com VBA.

Para acompanhar o tópico, viste o link: http://www.juliobattisti.com.br/forum/forum_posts.asp?TID=15402

No SQL Server 2005 Express criei uma base de dados de nome “test_excel” com uma única tabela chamada “names” com os seguintes campos:

id – int – identity
name – nvarchar(50) – allownull = false

O código abaixo serve para extrair os dados no excel na planilha de nome names:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Sub RetrieveSQLServerData()
' Cria a conexão.
    Dim cntest_excel As ADODB.Connection
    Set cntest_excel = New ADODB.Connection
    ' Variável para armazenar a String de Conexão.
    Dim strConn As String
    'Informa o SQL Server OLE DB Provider.
    strConn = "PROVIDER=SQLOLEDB;"
    'Conecta à base de dados Pubs no servidor local.
    strConn = strConn & "DATA SOURCE=WKS-DEVELOPER7\SQLEXPRESS;INITIAL CATALOG=test_excel;"
    'Usa autenticação integrada.
    strConn = strConn & " INTEGRATED SECURITY=sspi;"
    'Abre a conexão.
    cntest_excel.Open strConn
    ' Cria o objeto Recordset.
    Dim rsPubs As ADODB.Recordset
    Set rsPubs = New ADODB.Recordset
    With rsPubs
        ' Associa a conexão.
        .ActiveConnection = cntest_excel
        ' Extrai os dados.
        .Open "SELECT * FROM names"
        ' Coloca os dados na planilha.
        Worksheets("names").Range("A1").CopyFromRecordset rsPubs
        ' Fecha a transação
        .Close
    End With
    ' Fecha conexão
    cntest_excel.Close
    Set rsPubs = Nothing
    Set cntest_excel = Nothing
End Sub

Para inserir dados na tabela, digite uma lista de nomes simples na coluna A da planilha nomes, por exemplo:

Julio
Robert
Edmilson
Felipe
Com isso, o seguinte código serve para inserir estes nomes na tabela names do SQL Server:


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Sub InsertDataIntoSQLServer()
' Cria a conexão.
    Dim cntest_excel As ADODB.Connection
    Set cntest_excel = New ADODB.Connection
    ' Variável para controlar o percorrer das linhas da planilha.
    Dim i As Long
    ' Variável para armazenar a String de Conexão.
    Dim strConn As String
    'Informa o SQL Server OLE DB Provider.
    strConn = "PROVIDER=SQLOLEDB;"
    'Conecta à base de dados Pubs no servidor local.
    strConn = strConn & "DATA SOURCE=WKS-DEVELOPER7\SQLEXPRESS;INITIAL CATALOG=test_excel;"
    'Usa autenticação integrada.
    strConn = strConn & " INTEGRATED SECURITY=sspi;"
    'Abre a conexão.
    cntest_excel.Open strConn
    i = 1
    Do Until IsEmpty(Worksheets("names").Cells(i, 1))
        cntest_excel.Execute "INSERT INTO names (name) values ('" & Worksheets("names").Cells(i, 1).Value & "')"
        i = i + 1
    Loop
    ' Fecha conexão
    cntest_excel.Close
    Set rsPubs = Nothing
    Set cntest_excel = Nothing
End Sub

O código funciona para o SQL Server com minhas configurações. Verifique parâmetros como usuário e senha para fazer funcionar na sua máquina corretamente. Não esqueça também de adcionar a referência ao Microsoft Active Data Objects no projeto VBA.

Abraços

Tomás Vásquez

Exportando dados do Microsoft Outlook fácil, fácil

Uma maneira fácil de fazer a exportação de dados do Outlook para uma base de dados é usar o próprio assistente de exportação do aplicativo.

Muitas vezes nos enrolamos tentando fazer consultas diretas ao arquivo .pst sem atentar a este simples recurso. Para efetuar a exportação, basta ir ao menu Arquivo->Importar e exportar…, selecionar a opção “Exportar para um arquivo”, selecionar o tipo de arquivo ou base de dados em que os dados ficarão (para facilitar neste caso, selecione Microsoft Excel), selecionar a pasta a ser exportada (sim, terá que ser uma por vez)e em seguida informar o nome de arquivo. Há uma opção para manipular campos personalizados, mas não é o caso, então, basta confirmar a ação.

Após a exportação, basta conferir o formato em que os dados foram exportados. Praticamente todas as informações relevantes estão lá, e podem ser manipuladas a vontade.

Um recurso bacana e muito simples de ser utilizado.

Até a próxima!

Tomás Vásquez