Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hugo Anselmo

Importar Arquivo TXT

Recommended Posts

Olá pessoal tenho um formulário para importar dados do txt para uma tabela do Access conforme os códigos abaixo

 

Botão:

Private Sub CGru_Click()
   ImportaTXT ("ltopenGru02.txt")
End Sub

 

E o ImportaTXT:

Public Sub ImportaTXT(Arq As String)

   On Error GoTo trataerro

   Const ForReading = 1, ForWriting = 2, ForAppending = 3
   Dim fs, f
   Dim st As String
   Dim terminal As String
   Dim number As String
   Dim bath As String
   Dim name As String
   Dim Data As Date
   Dim Credit As Double
   Dim Debit As Double
   Dim Payment As Double
   Dim strSQL As String
   Dim Arquivo As String
   Dim Tabela As String
   Dim db As DAO.Database
   Dim rst As DAO.Recordset
   Arquivo = "c:\@Bases\" & Arq
   Set db = CurrentDb()
   Set fs = CreateObject("Scripting.FileSystemObject")
   Set f = fs.OpenTextFile(Arquivo, ForReading, TristateTrue)

   strSQL = "DELETE FROM [tbl " & Arq & "];"
   DoCmd.SetWarnings False
   DoCmd.RunSQL strSQL


   st = f.ReadLine
   st = f.ReadLine

   Tabela = "tbl " & Arq
   Set rst = db.OpenRecordset(Tabela, dbOpenTable)

   Do
       st = f.ReadLine
       rst.AddNew
       rst![TERMINAL NUMBER] = Mid(st, 17, 8)
       rst![se Number] = Mid(st, 37, 10)
       rst![bATCH NUMBER] = Mid(st, 62, 8)
       st = f.ReadLine
       rst![sE NAME] = RTrim(Mid(st, 10, 31))
       st = f.ReadLine
       rst![Date] = CDate(Mid(st, 6, 11))
       st = f.ReadLine
       st = f.ReadLine
       rst![CREDIT AMOUNT] = CDbl(Replace(LTrim(Mid(st, 5, 13)), ".", ","))
       rst![Debit Amount] = CDbl(Replace(LTrim(Mid(st, 26, 13)), ".", ","))
       rst![PAYMENT AMOUNT] = CDbl(Replace(LTrim(Mid(st, 47, 13)), ".", ","))
       st = f.ReadLine
       rst.Update
   Loop While Not f.AtEndOfStream

   DoCmd.OpenTable Tabela, acViewNormal, acReadOnly

   rst.Close
   db.Close
   f.Close
   Set fs = Nothing

trataerro:
   If Err.number <> 0 Then
       MsgBox Err.Description & " - " & Err.number, vbCritical
   End If


End Sub

 

Tudo funciona perfeitamente porque todos os dias tenho apenas 1 arquivo para importar e coloco o nome dele no evento que chama o ImportaTXT, acontece que agora preciso importar mais de 10.000 arquivos para a tabela(todos estão no mesmo diretório da variável arquivo "c:\@Bases\") mas não estou conseguindo implementar essa necessidade no código, tenho que ir alterando o nome do arquivo na chamada do ImportaTXT.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Tedy,

 

Sugestão abaixo:

 

Importar vários arquivos txt para mdb

 

 

 

Sem mais,

 

Julien Sorel

 

_________________________________________________________________

 

ef3cinco.worpress.com | Programação - não importa a linguagem...

 

 

Obrigado pelo retorno mas antes de postar tentei implementar seu código e não consegui, abaixo o que fiz:

 

Criei o form ifrmExplorer

Criei o textbox txtDir

Criei a tabela base

Criei o botão import_txt e no evento onClick coloquei o seu código

Setei a tabela base na variavel strTable = "base"

 

Coloco o endereço dos arquivo no textbox c:\base e ao clicar no botão vai direto para a exceção (ERRO número 424 O objeto é obrigatório)

 

Estou intrigado com a linha de código

DoCmd.TransferText acImportDelim, "ImportSpecification", strTable, strArquivo, False 

porque eu alterei para

DoCmd.TransferText acLinkFixed, "ImportSpecification", strTable, strArquivo, False

Quero importar todos os campos do arquivos (delimitado ;)para um único campo da tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá pessoal, hoje acordei inspirado e consegui alguns avanços mas continuo com problemas.

 

Como disse anteriormente fiz alteração no DoCmd e por final ficou assim

DoCmd.TransferText acLinkFixed, "Sgi-bk", strTable, strArquivo, False

Percebam que no campo de especificação que estava "ImportSpecification" (o exemplo do Julien Sorel

 

)eu criei uma importação e salvei com o nome "Sgi-bk".

 

Eu consigo importar todos os arquivos que estão no diretório mas se eu quiser importar arquivos que estão em outro diretório preciso criar outra importação e salvá-la novamente (com o mesmo nome Sgi-bk para não mexer no código).

 

Pergunta: tem como automatizar isso para que eu importe arquivos de qualquer diretório e não apenas do diretório onde criei a importação Sgi-bk ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde

Amigos, preciso fazer a exportação de umas informações de execel para um arquivo .txt, porem nesse arquivo os separadores nao podem ter " / " utilizado em data e " :" em horas. vi alguns topicos que utilizar macros, porem nao entendo de programação e nesse exportava os valores com esses caracteres.

 

Se puderem ajudar agradeço.

 

Forte abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde

Amigos, preciso fazer a exportação de umas informações de execel para um arquivo .txt, porem nesse arquivo os separadores nao podem ter " / " utilizado em data e " :" em horas. vi alguns topicos que utilizar macros, porem nao entendo de programação e nesse exportava os valores com esses caracteres.

 

Se puderem ajudar agradeço.

 

Forte abraço.

 

Não entendi bem mas me diga:

 

Quais colunas sua planilha possui.

Qual o campo possui o a data e qual posui a hora.

Qual o separador você quer usar.

 

Tente detalhar mais ok ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.

 

Assim tenho uma planilha de execel onde serao anotados as entradas e saidas dos funcionarios, ex: data em uma coluna entrada coluna 2 saida coluna 3, entrada coluna 4 e saida coluna 5. o formato da data esta em ex: 27/03/2012 da hora ex: 08:00. Para eu exportar essas informações para meu programa de folha de pagamento tenho que transformar isso em um arquivo de texto, ai pensei poderia copiar e colar facil né, porem meu sistema nao lê caracteres diferentes, ex. se eu copia do excel para o bloco de notas ficaria assim: 27/03/2012 08:00 11:00 13:00 18:00 , e meu sistema nao le esses espaços, barras e dois pontos.

Preciso exportar essas informações para que fique assim lembrando que em um arquivo de .txt 270320120800110013001800 entendeu? mas no caso teria uma continuação abaixo pois seria marcações do mes inteiro.

se puder ajudar e se sim comentar onde poderia modificar caso quisesse adicionar mais uma coluna e tal.ok.

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

ok.

 

Assim tenho uma planilha de execel onde serao anotados as entradas e saidas dos funcionarios, ex: data em uma coluna entrada coluna 2 saida coluna 3, entrada coluna 4 e saida coluna 5. o formato da data esta em ex: 27/03/2012 da hora ex: 08:00. Para eu exportar essas informações para meu programa de folha de pagamento tenho que transformar isso em um arquivo de texto, ai pensei poderia copiar e colar facil né, porem meu sistema nao lê caracteres diferentes, ex. se eu copia do excel para o bloco de notas ficaria assim: 27/03/2012 08:00 11:00 13:00 18:00 , e meu sistema nao le esses espaços, barras e dois pontos.

Preciso exportar essas informações para que fique assim lembrando que em um arquivo de .txt 270320120800110013001800 entendeu? mas no caso teria uma continuação abaixo pois seria marcações do mes inteiro.

se puder ajudar e se sim comentar onde poderia modificar caso quisesse adicionar mais uma coluna e tal.ok.

 

Obrigado desde já.

 

Tem como montar o layout no próprio excel desde que esse arquivo não seja tão grande...

 

Um exemplo;

 

|A |B |C |D |E

1|data_entrada|hora_entrada|data_saida|hora_saida|RESULTADO

2|27/03/2012 |10:45 |27/03/2012|09:30 |270320121045270320120930

3|10/02/2012 |09:00 |02/03/2012|13:20 |100220120900020320121320

 

Na célula E2 coloque a fórmula

=EXT.TEXTO(A2;1;2)&EXT.TEXTO(A2;4;2)&EXT.TEXTO(A2;7;4)&EXT.TEXTO(B2;1;2)&EXT.TEXTO(B2;4;2)&EXT.TEXTO(C2;1;2)&EXT.TEXTO(C2;4;2)&EXT.TEXTO(C2;7;4)&EXT.TEXTO(D2;1;2)&EXT.TEXTO(D2;4;2)

 

O cuidado que você deve ter é que todas as células, com exceção da célula que leva a fórmula, deve estar formatada como texto.

 

Veja se você consegue montar e posta ai !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pergunta: tem como automatizar isso para que eu importe arquivos de qualquer diretório e não apenas do diretório onde criei a importação Sgi-bk ? Hardware.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa NOITE a todos preciso exportar dados de uma planilha de excel para um arquivo txt, porem esse arquivo sera importado para outro sistema, por isso tem um layout ja definido, existe algum macro que possa fazer que consiga fazer isso?

ex.: minha planilha tem:

nome: erica

cidade: curitiba

salario: 1000

 

o arquivo tem que ficar com seguinte layout:

erica curitiba 0000100000 1200 000000 *

pedro filho londirna 0000090000 000000 *

 

note que erica começa em 1 termina 50, a cidade começa 51 termina 80; e assim por diante finalizando sempre com *

no começo tem os dados da empresa ai tem as posições tambem para cada um.

 

Caso algeum possa ajudar, como nao esntendo de programação se puder colocar o comentario no codigo ai consigo ir vendo e fazendo isso no restante das 300 informações que preciso importar rsrs...

 

Obrigada.ericaffj

Membro

 

 

Mensagens: 2

Registrado em: Ontem, 16:02

Agradeceu : 0 time

Foi agradecido: 0 time

Mensagem particularE-mail ericaffjVoltar ao topo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.