Boas...
como fazer importação de um texto sem delimitador
porem na linha do código If Left(LinhaDoTexto, 1) Like "N" Then o "N" começa no caractere nº10, gostaria que o código percorresse este txt e ao encontra este N importasse a Data o nome e o valor R$...
segue o código do mestre JPaulo.
Public Sub ImportaSemDelimitadores()
'By JPaulo ® Maximo Access
Dim Delimitador As String
Dim DB As Database
Dim fnum As Integer
Dim LinhaDoTexto, LinhaDoTextoTemp As String
Dim InstrucaoSQL As String
Dim Posicao As Integer
Dim QtdDeRegistros As Long
Dim ArquivoTexto As String
Dim strBanco As Databases
Dim strTabela As String
ArquivoTexto = "D:\Desktop\DS\TesteImportacao.txt" 'caminho do arq de texto
strTabela = "temp" 'nome da tabela no banco
Delimitador = "|" 'defina aqui qual o delimitador
If Delimitador = "" Then Delimitador = " "
If Delimitador = "" Then Delimitador = vbTab
fnum = FreeFile
On Error GoTo NoTextFile
Open ArquivoTexto For Input As fnum
On Error GoTo NoDatabase
Set DB = CurrentDb
On Error GoTo 0
Do While Not EOF(fnum)
Line Input #fnum, LinhaDoTexto
'se existe texto, segue o código
'If Len(LinhaDoTexto) > 0 Then
'encontrar a linha com o inicio a começar por N
If Left(LinhaDoTexto, 1) Like "N" Then
'aqui deleta onde o texto começar por 4530*
' LinhaDoTextoTemp = Mid(LinhaDoTexto, 11, 255)
'LinhaDoTexto = LinhaDoTextoTemp
'End If
'se existir uma linha em branco, passa para a proxima
If Len(LinhaDoTexto) < 0 Then
LinhaDoTexto = LinhaDoTexto + 1
End If
'percorre todo o texto do txt e adiciona à tabela
InstrucaoSQL = "INSERT INTO " & _
strTabela & " VALUES ("
Do While Len(LinhaDoTexto) > 0
Posicao = InStr(LinhaDoTexto, Delimitador)
If Posicao = 0 Then
InstrucaoSQL = InstrucaoSQL & _
"'" & LinhaDoTexto & "', "
LinhaDoTexto = ""
Else
InstrucaoSQL = InstrucaoSQL & _
"'" & Left$(LinhaDoTexto, Posicao - 1) & _
"', "
LinhaDoTexto = Mid$(LinhaDoTexto, Posicao + Len(Delimitador))
End If
Loop
InstrucaoSQL = Left$(InstrucaoSQL, Len(InstrucaoSQL) - 2) & ")"
On Error GoTo SQLError
DB.Execute InstrucaoSQL
On Error GoTo 0
QtdDeRegistros = QtdDeRegistros + 1
End If
Loop
Close fnum
DB.Close
MsgBox "Inseridas " & Format$(QtdDeRegistros) & " Linhas"
Exit Sub
NoTextFile:
MsgBox "Erro na abertura do Arquivo de Texto."
Exit Sub
NoDatabase:
MsgBox "Erro na abertura do Banco."
Close fnum
Exit Sub
SQLError:
MsgBox "Erro na execusão do SQL '" & _
InstrucaoSQL & "'"
Close fnum
DB.Close
Exit Sub
End Sub
Exemplo TXT:
Conta 24514 246004000000000 LUCROS DIST. ANTECIPADAMENTE
SALDO ANTERIOR................ 0,00
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RAFAEL PONTES RIBEIRO 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS VADIS INACIO PELIZZA 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ADRIANA CUNHA PELIZZA 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ALEXANDRE DE SOUZA CURY 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RUDNEY DE OLIVEIRA
RACHEL 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RENATO LUCIO MARTINS 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ANA PAULA C. PONTES 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS DANIELA DE OLIVEIRA
RODRIGUES 2.670,73
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RAFAEL PONTES RIBEIRO 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS VADIS INACIO PELLIZA 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ADRIANA CUNHA PELIZZA 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ALEXANDRE DE SOUZA CURY 3.800,15
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RUDNEY DE OLIVEIRA
RACHEL 3.800,15
Att,
como fazer importação de um texto sem delimitador
porem na linha do código If Left(LinhaDoTexto, 1) Like "N" Then o "N" começa no caractere nº10, gostaria que o código percorresse este txt e ao encontra este N importasse a Data o nome e o valor R$...
segue o código do mestre JPaulo.
Public Sub ImportaSemDelimitadores()
'By JPaulo ® Maximo Access
Dim Delimitador As String
Dim DB As Database
Dim fnum As Integer
Dim LinhaDoTexto, LinhaDoTextoTemp As String
Dim InstrucaoSQL As String
Dim Posicao As Integer
Dim QtdDeRegistros As Long
Dim ArquivoTexto As String
Dim strBanco As Databases
Dim strTabela As String
ArquivoTexto = "D:\Desktop\DS\TesteImportacao.txt" 'caminho do arq de texto
strTabela = "temp" 'nome da tabela no banco
Delimitador = "|" 'defina aqui qual o delimitador
If Delimitador = "
If Delimitador = "
fnum = FreeFile
On Error GoTo NoTextFile
Open ArquivoTexto For Input As fnum
On Error GoTo NoDatabase
Set DB = CurrentDb
On Error GoTo 0
Do While Not EOF(fnum)
Line Input #fnum, LinhaDoTexto
'se existe texto, segue o código
'If Len(LinhaDoTexto) > 0 Then
'encontrar a linha com o inicio a começar por N
If Left(LinhaDoTexto, 1) Like "N" Then
'aqui deleta onde o texto começar por 4530*
' LinhaDoTextoTemp = Mid(LinhaDoTexto, 11, 255)
'LinhaDoTexto = LinhaDoTextoTemp
'End If
'se existir uma linha em branco, passa para a proxima
If Len(LinhaDoTexto) < 0 Then
LinhaDoTexto = LinhaDoTexto + 1
End If
'percorre todo o texto do txt e adiciona à tabela
InstrucaoSQL = "INSERT INTO " & _
strTabela & " VALUES ("
Do While Len(LinhaDoTexto) > 0
Posicao = InStr(LinhaDoTexto, Delimitador)
If Posicao = 0 Then
InstrucaoSQL = InstrucaoSQL & _
"'" & LinhaDoTexto & "', "
LinhaDoTexto = ""
Else
InstrucaoSQL = InstrucaoSQL & _
"'" & Left$(LinhaDoTexto, Posicao - 1) & _
"', "
LinhaDoTexto = Mid$(LinhaDoTexto, Posicao + Len(Delimitador))
End If
Loop
InstrucaoSQL = Left$(InstrucaoSQL, Len(InstrucaoSQL) - 2) & ")"
On Error GoTo SQLError
DB.Execute InstrucaoSQL
On Error GoTo 0
QtdDeRegistros = QtdDeRegistros + 1
End If
Loop
Close fnum
DB.Close
MsgBox "Inseridas " & Format$(QtdDeRegistros) & " Linhas"
Exit Sub
NoTextFile:
MsgBox "Erro na abertura do Arquivo de Texto."
Exit Sub
NoDatabase:
MsgBox "Erro na abertura do Banco."
Close fnum
Exit Sub
SQLError:
MsgBox "Erro na execusão do SQL '" & _
InstrucaoSQL & "'"
Close fnum
DB.Close
Exit Sub
End Sub
Exemplo TXT:
Conta 24514 246004000000000 LUCROS DIST. ANTECIPADAMENTE
SALDO ANTERIOR................ 0,00
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RAFAEL PONTES RIBEIRO 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS VADIS INACIO PELIZZA 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ADRIANA CUNHA PELIZZA 2.670,72
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ALEXANDRE DE SOUZA CURY 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RUDNEY DE OLIVEIRA
RACHEL 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RENATO LUCIO MARTINS 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ANA PAULA C. PONTES 2.670,73
N 20/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS DANIELA DE OLIVEIRA
RODRIGUES 2.670,73
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RAFAEL PONTES RIBEIRO 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS VADIS INACIO PELLIZA 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ADRIANA CUNHA PELIZZA 3.800,14
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS ALEXANDRE DE SOUZA CURY 3.800,15
N 21/01 DIV DEB.C/C PG DISTRIBUICAO DE
LUCROS RUDNEY DE OLIVEIRA
RACHEL 3.800,15
Att,