Olá! Bom dia, boa tarde ou boa noite!
Gostaria da ajuda de vocês.
Estou montando um projeto de automação de importação diária de TXTs e já está bem adiantado, porém gostaria de tornar este projeto possível para quaisquer TXT, mas pra isso eu preciso alterar a especificação de forma mais dinâmica ( alterando em uma tabela ou form quando necessário ) uma outra solução que pensei, porém não sei como escrever é uma importação via VBA que seja escrita como no VBA do Excel, com todos os parâmetros escritos no próprio módulo.
espero ter me feito entender.
Caso interesse, abaixo o código que montei (com algumas pesquisas e com escrita própria e que já está pronto):
Ele executa pela Function Ler:
Gostaria da ajuda de vocês.
Estou montando um projeto de automação de importação diária de TXTs e já está bem adiantado, porém gostaria de tornar este projeto possível para quaisquer TXT, mas pra isso eu preciso alterar a especificação de forma mais dinâmica ( alterando em uma tabela ou form quando necessário ) uma outra solução que pensei, porém não sei como escrever é uma importação via VBA que seja escrita como no VBA do Excel, com todos os parâmetros escritos no próprio módulo.
espero ter me feito entender.
Caso interesse, abaixo o código que montei (com algumas pesquisas e com escrita própria e que já está pronto):
Ele executa pela Function Ler:
- Código:
Function Ler()
Dim strCaminho As String
With Application.FileDialog(msoFileDialogFolderPicker)
.AllowMultiSelect = False 'Permitir mais de uma pasta
.Show 'Mostrar janela
If .SelectedItems.Count > 0 Then
strCaminho = .SelectedItems(1)
Else:
MsgBox "Nenhuma pasta selecionada, import sendo cancelado."
Exit Function
End If
End With
Call ContaFicheirosExtraiNome(strCaminho, True)
DoCmd.SetWarnings False
'DoCmd.OpenQuery "RemovPontosHifen037", acViewNormal, acEdit
DoCmd.SetWarnings True
'CurrentDb.Execute "DROP TABLE TempTable", dbFailOnError
MsgBox "ok"
End Function
_______________________________________
Public Function ContaFicheirosExtraiNome(strCaminho As String, strIncluiSubPastas As Boolean)
'Requer a seguinte referência VBA ativa: Microsoft Scripting Runtime - Para chamar a função, deve colocar no pressionar de um botão: Call ContaFicheirosExtraiNome("C:\SuaPasta\",True)
Dim fso As Object, strPasta As Object, strSubPasta As Object, strFicheiro As Object
Dim strConta As Long, strSQL As String
Set fso = CreateObject("Scripting.FileSystemObject")
Set strPasta = fso.GetFolder(strCaminho)
For Each strFicheiro In strPasta.Files 'Percorre a drive e extraí o nome das pastas, subPastas e ficheiros
If Mid([strFicheiro], InStrRev([strFicheiro], "\") + 1) Like "*.txt*" Then 'Insere na tabela o caminho completo dos ficheiros com as extensões TXT
ArquivoCaminhoUsa = strPasta.Path & "\" & strFicheiro.name
FileCopy ArquivoCaminhoUsa, CurrentProject.Path & "\TEMP" & ".txt"
DoCmd.TransferText acImportDelim, "ImportValoresHC", "TempTable", CurrentProject.Path & "\TEMP" & ".txt"
Kill CurrentProject.Path & "\TEMP" & ".txt"
strConta = strConta + 1
Else
End If
Next strFicheiro
If strIncluiSubPastas = True Then 'Se existirem subpastas, insere na tabela o caminho completo dos ficheiros
For Each strSubPasta In strPasta.SubFolders
ContaFicheirosExtraiNome strSubPasta.Path, True
Next strSubPasta
End If
Set strFicheiro = Nothing
Set strPasta = Nothing
End Function