Ola pessoal!
É o seguinte, estou importando um aquivo txt para o Access, está tudo ok, porem nas linhas que contem virgula, o vba entende como delimitador e quebra a linha.
Ex:
Linha do Txt, (Exatamente com está no txt)
30089 4 TURISMO 19/01/15 04/02/15 82027 5 APACHE VIP IV Em Liberação 1,534
Reparem que o valor no fim da linha "1,534" contem uma virgula e estou colocando esse valor em uma variável com o comando abaixo
strPesoPadraoTxt = Mid(strLinha, 108, 14)
o resultando de strPesoPadraoTxt é "1" e não "1,534"
Eu sei que ocorre é uma quebra na linha por o VBA estar entendendo a virgula como delimitador pegando apenas o "1" e jogando o valor "534" na próxima linha. Mas como faço para o VBA entender que nesse caso quero q ele ñ reconheça a virgula como delimitados e sim como um texto norma?
Obrigado!
Em anexo segue txt e abaixo o código:
É o seguinte, estou importando um aquivo txt para o Access, está tudo ok, porem nas linhas que contem virgula, o vba entende como delimitador e quebra a linha.
Ex:
Linha do Txt, (Exatamente com está no txt)
30089 4 TURISMO 19/01/15 04/02/15 82027 5 APACHE VIP IV Em Liberação 1,534
Reparem que o valor no fim da linha "1,534" contem uma virgula e estou colocando esse valor em uma variável com o comando abaixo
strPesoPadraoTxt = Mid(strLinha, 108, 14)
o resultando de strPesoPadraoTxt é "1" e não "1,534"
Eu sei que ocorre é uma quebra na linha por o VBA estar entendendo a virgula como delimitador pegando apenas o "1" e jogando o valor "534" na próxima linha. Mas como faço para o VBA entender que nesse caso quero q ele ñ reconheça a virgula como delimitados e sim como um texto norma?
Obrigado!
Em anexo segue txt e abaixo o código:
- Código:
Public Sub LimpaTxtESPD0083()
'-------------------------------DEFINIÇÃO DA FUNÇÃO-----------------------------------'
' Importa e Limpa Txt Gerado pela tela ESPD0083 '
'-------------------------------------------------------------------------------------'
Dim strEncTxt As String
Dim strUnidTxt As String
Dim intUnidTxt As Integer
Dim strClienteTxt As String
Dim strEntLinhaTxt As String
Dim strPrevLiberTxt As String
Dim strNeTxt As String
Dim strAtrasoTxt As String
Dim strCarroceriaTxt As String
Dim strPosicaoTxt As String
Dim strPesoPadraoTxt As String
Dim strCaminho As String
Dim dtDataGerado As Date
Dim strLinha As String
strCaminho = [Form_Importa Txt].TxtESPD0083 'O caminho do txt é recebido de um textbox
dtDataGerado = Date
' ---> Abre banco atual e arquivo txt para entrada
Open strCaminho For Input As #1
' ---> Importa txt ESPD0083
Do While Not EOF(1)
Input #1, strLinha
'---> Pega valor na variável e retira espaços antes e depois
strEncTxt = Mid(strLinha, 1, 6)
strEncTxt = Trim(strEncTxt)
strUnidTxt = Mid(strLinha, 7, 6)
strUnidTxt = Trim(strUnidTxt)
strClienteTxt = Mid(strLinha, 14, 13)
strClienteTxt = Trim(strClienteTxt)
strEntLinhaTxt = Mid(strLinha, 27,
strEntLinhaTxt = Trim(strEntLinhaTxt)
strPrevLiberTxt = Mid(strLinha, 36,
strPrevLiberTxt = Trim(strPrevLiberTxt)
strNeTxt = Mid(strLinha, 45, 7)
strNeTxt = Trim(strNeTxt)
strAtrasoTxt = Mid(strLinha, 53, 6)
strAtrasoTxt = Trim(strAtrasoTxt)
strCarroceriaTxt = Mid(strLinha, 60, 25)
strCarroceriaTxt = Trim(strCarroceriaTxt)
strPosicaoTxt = Mid(strLinha, 86, 21)
strPosicaoTxt = Trim(strPosicaoTxt)
strPesoPadraoTxt = Mid(strLinha, 108, 14)
strPesoPadraoTxt = Trim(strPesoPadraoTxt)
'---> Descarta linhas desnecessarias e insere na tabela as linhas validas
If IsNumeric(strEncTxt) Then
CurrentDb.Execute "INSERT INTO ImportaESPD0083 (ENC, Und, Cliente, EntLinha, PrevLiber, Ne, Atraso, Carroceria, Posicao, PesoPadrao, DataRelatorio)" _
& " VALUES ('" & strEncTxt & "', '" & strUnidTxt & "', '" & strClienteTxt & "', '" & strEntLinhaTxt & "', '" & strPrevLiberTxt & "', '" & strNeTxt & "'," _
& " '" & strAtrasoTxt & "', '" & strCarroceriaTxt & "', '" & strPosicaoTxt & "', '" & strPesoPadraoTxt & "', '" & dtDataGerado & "')"
End If
Loop
'---> Finaliza
Close #1
strCaminho = ""
End Sub
- Anexos
- ESPD0083.txt
- Você não tem permissão para fazer download dos arquivos anexados.
- (6 Kb) Baixado 18 vez(es)