Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Dúvidas para Profissionais - Importação TXT via VBA


andrezosa

Pergunta

Olá amigos,

Essa é minha primeira postagem aqui no Fórum. Normalmente consigo tirar todas minhas dúvidas por aqui, mas essa está tão complicada que não encontrei resposta em nenhum lugar. Por isso recorro a vocês:

Estou tentando fazer uma macro para automatizar arquivos TXT em um determinado diretório. Como haverá muitos arquivos simultâneos para importação, fiz uma macro para importar todos os arquivos .txt de uma determinada pasta. Todos os arquivos estão no mesmo lay-out e serão importados para uma mesma tabela (TBL_TEMP).Até aí tudo bem, mas agora estou com outro problema.

Preciso que o nome de cada base seja em todos os registros importados dessa (em alguma coluna) para que eu consiga identificar posteriormente a origem do registro. Até criei uma coluna no arquivo [KEY] para tentar gravar nesse campo o nome do arquivo original, mas até agora não consegui. E olha que vasculhei o Google todo!!

Segue o código que fiz até agora:

Option Compare Database
Option Explicit


Private Sub Comando0_Click()
On Error GoTo msg_erro
Dim InputDir, ImportFile As String, Base_Name As String

InputDir = "C:\BASES_IMPLANTACAO" 'Diretório Origem dos Arquivos'
ImportFile = Dir(InputDir & "\*.txt") 'Selecionar todos arquivos texto'

Do While Len(ImportFile) > 0

    Base_Name = Left(ImportFile, (InStr(1, ImportFile, ".") - 1)) 'Identificar o nome do arquivo implantado'
    DoCmd.TransferText acImportDelim, "LAYOUT", "TBL_TEMP", ImportFile 'Comando p/ import. Lay-out pré-definido, Tabela Final - TBL_TEMP'

    ImportFile = Dir
    
Loop
Exit Sub

msg_erro:
   MsgBox Err.Description

End Sub

Alguém aí com conhecimento pra me ajudar?

Desde já agradeço!

Pessoal,

Só pra ficar claro... para registro importado, preciso gravar o nome do arquivo original (arquivo .txt) em uma determinada coluna, para conseguir mapear a origem desse registro.

Obrigado!

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Bom dia, Andrezosa

A tabela TBL_TEMP deve ter todos os registos existentes com o campo KEY preenchido.

Ultize o seguinte código que funcionará:

Option Compare Database
Option Explicit


Private Sub Comando0_Click()
On Error GoTo msg_erro
Dim InputDir, ImportFile As String, Base_Name As String

InputDir = "C:\BASES_IMPLANTACAO" 'Diretório Origem dos Arquivos'
ImportFile = Dir(InputDir & "\*.txt") 'Selecionar todos arquivos texto'

Do While Len(ImportFile) > 0

Base_Name = Left(ImportFile, (InStr(1, ImportFile, ".") - 1)) 'Identificar o nome do arquivo implantado'
DoCmd.TransferText acImportDelim, "LAYOUT", "TBL_TEMP", ImportFile 'Comando p/ import. Lay-out pré-definido, Tabela Final - TBL_TEMP'

ImportFile = Dir
CurrentDb.Execute "UPDATE TBL_TEMP SET KEY='" & Base_Name &"' WHERE IsNull(KEY) or KEY='';"
Loop
Exit Sub

msg_erro:
MsgBox Err.Description

End Sub

Link para o comentário
Compartilhar em outros sites

  • 0

Amigos... agora estou com outro problema.

Quando tento importar os arquivos, aparentemente há um problema na carga e o 1º campo sempre dá erro (Truncamento de campo) .

Não é problema no VBA. Acredito que o access não está dando conta de processar tudo ao mesmo tempo. Isso é possível?

Obrigado,

ANdré

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...