Propósito

✔ Programação GLOBAL® - Quaisquer soluções e/ou desenvolvimento de aplicações pessoais, ou da empresa, que não constem neste Blog devem ser tratados como consultoria freelance. Queiram contatar-nos: brazilsalesforceeffectiveness@gmail.com | ESTE BLOG NÃO SE RESPONSABILIZA POR QUAISQUER DANOS PROVENIENTES DO USO DOS CÓDIGOS AQUI POSTADOS EM APLICAÇÕES PESSOAIS OU DE TERCEIROS.

.: Vitrine

Carregando artigos...

Views

Mostrando postagens com marcador TransferText. Mostrar todas as postagens
Mostrando postagens com marcador TransferText. Mostrar todas as postagens

Excel VBA - Conexões: Aberta a temporada - VBA to link CSV File, TXT File

Inline image 1



Pois é, em inúmeras ocasiões, quais bravos desenvolvedores, precisaremos conectar os mais diversos tipos de dados externos às nossas aplicações.

Isso pode ser feito: MS Access, Outros SGBDS do mercado, Ligações ODBC, Planilhas eletrônicas, Dados disponíveis em sites. E, neste caso, conectando-se a dados .CSV

Bem, tanto no caso do CSV, quanto do Texto, o modo é praticamente igual. Excetuando-se o fato de que os dados dentro do CSV estejam delimitados por ponto-e-vírgula.

Ahh, não seria nada apropriado continuar escrevendo este artigo sem explicar o que significa a extensão CSV, pois então, segue:

CSV - Comma-separated values

É um formato de arquivo que armazena dados tabelados, cujo grande uso vem da época dos mainframes. Por serem bastante simples, arquivos .csv são comuns em todas as plataformas de computador.

O CSV é uma 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.

Embora não exista uma especificação formal do formato CSV, o RFC 4180descreve um formato comum e estabelece text/csv como um tipo MIMEregistrado na IANA. Formalmente, o CSV é um formato de dados delimitado que possui campos (colunas) separados por caracteres de vírgula e registros (linhas) separados por caracteres de quebra de linha. Campos que contêm caracteres especiais (vírgula, quebra de linha ou aspas) devem ser envolvidos em aspas. Entretanto, se uma linha contiver uma única entrada que seja uma cadeia vazia, ela também pode ser envolvida por aspas. Se um campo contiver um caractere de aspas, ele é discernido posicionando outro caractere igual logo em seguida. O formato CSV não requisita uma codificação de caracteres, uma ordenação de bytes ou um formato de terminador de linha.

Bem, vamos ao que interessa. Como podemos conectar, através do VBA, um arquivo texto ou CSV?

Criei duas funções que fazem este papel para nós, livrando-nos de parte da dor de cabeça:

Nesta função abaixo não só conectamos um arquivo externo, mas fazemos ainda mais do que isso por exportá-lo para outro banco de dados. Ou seja, numa aplicação desenvolvida com o MS Access, geralmente um deles contém as interface (Formulários, Relatórios) e maioria das queries. Deixamos as tabelas e respectivas conexões em outro banco a parte.

Neste banco a parte efetuamos backups mais intensamente. Este banco a parte também fica disponível para outras camadas de dados, como por exemplo, para a criação da base indexada: KPI, Dashboard, Reports, e Scorecards.


Function ConecAction

    ' Author:                            Date:                       Contact:                             URL:

    ' André Bernardes             12/04/2011 11:39    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/

    ' Conecta arquivos texto disponíveis no Path.



    Dim nPath As String

    Dim nPath2 As String

    Dim nArchive As String

    Dim nFile As String

    Dim dbSource As String

    Dim dbTarget As String



    ' O nome do arquivo e o caminho (Path) vem de um formulário.

    Let nPath = Left(CurrentDb().Name, InStr(1, CurrentDb().Name, "Bernardess") - 2) & [Form_frm_Avisos].CxPath2.Value

    Let nPath2 = Left(CurrentDb().Name, InStr(1, CurrentDb().Name, "

Bernardess   ") - 1)  

    Let nArchive = [Form_frm_Avisos].CxFile2

    Let nFile = nPath & nArchive

    Let dbSource = Left(nArchive, Len(nArchive) - 4)    '"Cnn_" & nArchive

    Let dbTarget = nPath2 & "OtherBernardesBase.accdb"



    If IsNull(nPath) Or IsNull(nArchive) Then

        Beep



        MsgBox "Providencie o Path onde está o arquivo, bem como o nome do mesmo!", vbExclamation, ".: Bernardes Message"

    Else

        Call ConectTXTFile(1, "<Nome da especificação de importação>", dbSource, nPath & nArchive)  ' Conecta arquivo texto.

        'Call ExportTextFileConected (dbTarget, dbSource)             ' Exporta arquivo texto para Base de Dados.

    End If



    ' Atualiza o Form.

    [Form_frm_Avisos].listConnectedFiles.Requery

End 



Function ConectTXTFile

    ' Author:                             Date:                       Contact:                                URL:

    ' André Bernardes             11/04/2010 15:49    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/

    ' Conecta todos os arquivos textos..

    ' Listening: .

    ' Checa a existência da tabela neste banco e a apaga.



    If ObjectExists("Table", TableName) Then

        DoCmd.DeleteObject acTable, TableName     ' Se a tabela existir apaga-a.

    End If



    If nType = 0 Then

        DoCmd.TransferText acLinkFixed, nLayout, TableName, nFile, False

    ElseIf nType = 1 Then

        DoCmd.TransferText acLinkDelim, nLayout, TableName, nFile, False

    End If

End Function


As demais funções que percebe no código podem ser obtidas, caso deseje, por enviar-me um e-mail solicitando-as.

Boa diversão....Ehhh, em ocasião posterior abordaremos como conectar as demais bases de dados citadas.

Fontes: Wiki, GMAIL - Criando arquivo CSV

Tags: Excel,Connection, conect, CSV, TXT, RFC 4180, IANA, MIME, TransferText, acLinkFixed 

VBA Access - Exportando query ou tabela para arquivo texto com tabulação.

Exportar o conteúdo de tabelas, e o resultado de queries para arquivos texto delimitados por tabulação, não é algo tão difícil de aparecer como nossa necessidade.

Converting Pipe Delimited Text File To Tab Delimited
Create queries and export them to different tab delimited text
Export Access Query to a pipe delimited .csv file
Export Query result to txt file tab delimited 
Export query results to text file - not delimited
Export query to tab delimited text file
Export query to tab delimited text file
Exporting Data from Access with VBA Code
Microsoft: Access Modules (VBA Coding)
TransferText Macro Action
Truncation of Text on Export to .txt file
VBA + TransferText + SpecificationName (Access 2007) 
Visual Basic :: Export An Access Table As A Tab Delimited Text
table from .ADP to tab delimited text file 
Ainda bem que o MS Access facilita o nosso trabalho.

Observe os passos abaixo:





Posicione o mouse sobre a tabela que deseja exportar e pressione o botão direito.



A interface abaixo o conduzirá para os próximos passos. Informe primeiro o local onde o arquivo será gravado e pressione OK.



Agora ficou fácil!

Siga o passo-a-passo demonstrado abaixo. Certifique-se de escolher toda as mesmas versões demonstradas.





A fase abaixo será muito útil no futuro, pois gravaremos o modo de exportar como uma especificação, a qual poderá ser utilizada com código VBA a posteriori. 


CLIQUE EM AVANÇADO E SALVE-A.



Confirme o local para onde o conteúdo será exportado como arquivo texto.





Lembre-se que a especificação salva anteriormente poderá ser utilizada em conjunto com o código VBA. Como?


Crie um formulário

Crie um botão neste mesmo formulário

Insira o código abaixo dentro da ação do seu botão:



Function Export2Txt()
    Dim nPath As String
    
    Let nPath = "C:\Bernardes\"

    DoCmd.TransferText _
    acExportDelim, _
    "specExport", _
    acExportDelim, _
    , _
    "tbl_Factive", _
    nPath & "tbl_Export.txt", True
End Function



Tags: export, exportar, file, texto, text, TAB, tabulação, tabela, table, query, delimitado, delimited, TransferText, SpecificationName


André Luiz Bernardes
A&A® - Work smart, not hard.

Excel VBA - Conexões: Aberta a temporada - VBA to link CSV File, TXT File



Pois é, em inúmeras ocasiões, quais bravos desenvolvedores, precisaremos conectar os mais diversos tipos de dados externos às nossas aplicações.



Isso pode ser feito:


Outros SGBDS do mercado,


Ligações ODBC,


Planilhas eletrônicas,


Dados disponíveis em sites.





E, neste caso, conectando-se a dados 




.CSV





Bem, tanto no caso do CSV, quanto do Texto, o modo é praticamente igual. Excetuando-se o fato 

de que os dados dentro do CSV estejam delimitados por ponto-e-vírgula.





Ahh, não seria nada apropriado continuar escrevendo este artigo sem explicar o que significa a extensão CSV, pois então, segue:









CSV
Comma-separated values






É um formato de arquivo que armazena dados tabelados, cujo grande uso vem da época dos mainframes. Por serem bastante simples, arquivos .csv são comuns em todas as plataformas de computador.

O CSV é uma 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.

Embora não exista uma especificação formal do formato CSV, o RFC 4180 descreve um formato comum e estabelece text/csv como um tipo MIME registrado na IANA. Formalmente, o CSV é um formato de dados delimitado que possui campos (colunas) separados por caracteres de vírgula e registros (linhas) separados por caracteres de quebra de linha. Campos que contêm caracteres especiais (vírgula, quebra de linha ou aspas) devem ser envolvidos em aspas. Entretanto, se uma linha contiver uma única entrada que seja uma cadeia vazia, ela também pode ser envolvida por aspas. Se um campo contiver um caractere de aspas, ele é discernido posicionando outro caractere igual logo em seguida. O formato CSV não requisita uma codificação de caracteres, uma ordenação de bytes ou um formato de terminador de linha.






Bem, vamos ao que interessa. Como podemos conectar, através do VBA, um arquivo texto ou CSV?









Criei duas funções que fazem este papel para nós, livrando-nos de parte da dor de cabeça:




Nesta função abaixo não só conectamos um arquivo externo, mas fazemos ainda mais do




que isso por exportá-lo para outro banco de dados. Ou seja, numa aplicação desenvolvida




com o MS Access, geralmente um deles contém as interface (Formulários, Relatórios) e maioria


das queries. Deixamos as tabelas e respectivas conexões em outro banco a parte.





Neste banco a parte efetuamos backups mais intensamente. Este banco a parte também fica


disponível para outras camadas de dados, como por exemplo, para a criação da base indexada:











Function ConecAction



    ' Author:                            Date:                       Contact:                             URL:
    ' André Bernardes             12/04/2011 11:39    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/
    ' Conecta arquivos texto disponíveis no Path.

    Dim nPath As String
    Dim nPath2 As String
    Dim nArchive As String
    Dim nFile As String
    Dim dbSource As String
    Dim dbTarget As String

    ' O nome do arquivo e o caminho (Path) vem de um formulário.
    Let nPath = Left(CurrentDb().Name, InStr(1, CurrentDb().Name, "Bernardess") - 2) & [Form_frm_Avisos].CxPath2.Value
    Let nPath2 = Left(CurrentDb().Name, InStr(1, CurrentDb().Name, "
Bernardess
") - 1)

    Let nArchive = [Form_frm_Avisos].CxFile2
    Let nFile = nPath & nArchive
    Let dbSource = Left(nArchive, Len(nArchive) - 4)    '"Cnn_" & nArchive
    Let dbTarget = nPath2 & "OtherBernardesBase.accdb"

    If IsNull(nPath) Or IsNull(nArchive) Then
        Beep

        MsgBox "Providencie o Path onde está o arquivo, bem como o nome do mesmo!", vbExclamation, ".: Bernardes Message"
    Else
        Call ConectTXTFile(1, "<








Nome da especificação de importação




>", dbSource, nPath & nArchive)  ' Conecta arquivo texto.
        'Call ExportTextFileConected (dbTarget, dbSource)             ' Exporta arquivo texto para Base de Dados.
    End If

    ' Atualiza o Form.
    [Form_frm_Avisos].listConnectedFiles.Requery


End 










Function ConectTXTFile





    ' Author:                             Date:                       Contact:                                URL:





    ' André Bernardes             11/04/2010 15:49    bernardess@gmail.com     http://al-bernardes.sites.uol.com.br/





    ' Conecta todos os arquivos textos..





    ' Listening: .











    ' Checa a existência da tabela neste banco e a apaga.





    If ObjectExists("Table", TableName) Then





        DoCmd.DeleteObject acTable, TableName     ' Se a tabela existir apaga-a.





    End If





    





    If nType = 0 Then





        DoCmd.TransferText acLinkFixed, nLayout, TableName, nFile, False





    ElseIf nType = 1 Then





        DoCmd.TransferText acLinkDelim, nLayout, TableName, nFile, False





    End If





End Function






As demais funções que percebe no código podem ser obtidas, caso deseje, por enviar-me um e-mail solicitando-as.





Boa diversão....Ehhh, em ocasião posterior abordaremos como conectar as demais bases de dados citadas.


Fontes: Wiki,

            GMAIL - Criando arquivo CSV






Tags: Excel,
Connection, conect, CSV, TXT, RFC 4180, IANA, MIME, 
TransferText, acLinkFixed






André Luiz Bernardes
A&A® - Work smart, not hard.








  

diHITT - Notícias