Boa noite pessoal
sou novo no forum e tambem no VBA do ACCESS, na empresa que trabalho usamos o access para auxiliar no controle da produção importando relatorios do sistema principal para uma pasta na rede e os arquivos estavam sendo salvos em excel, para importar para o access não tenho problema mas recentimente estamos recebendo os arquivos em txt que vem com 4 linha como se como um cabeçalho e depois a palavra order ex; abaixo loga apos apalavra order tem um mumero de um documento, no Access tenho um tabela chamada coois com tudos os campos abaixo( order material e assim por diante) preciso importar para esta tabela as linhas abaixo da linha tracejada depois da palavra order lembrando que o arquivo tem 18 mil linhas aproximadamente e dez colunas.
os colegas do forum podem me ajudar.
02/22/2012 Dynamic List Display 1
-------------------------------------------------------------------------
-------------------------------------------------------------------------
|Order |Material |Order Type|Target qty|Conf. qty|Unit|System Status
-------------------------------------------------------------------------
|30005075|PIWG1330092|ZP01 | 1,000 | 0 |PC |TECO MSPT PRC CSER SETC
|30005145|72827330001|ZP02 | 454 | 0 |PC |REL PRC GMPS MACM SETC
|30005181|PIWG1330092|ZP01 | 2 | 0 |PC |REL MSPT PRC GMPS SETC
|30005188|46196238L16|ZP01 | 7,600 | 0 |PC |REL MSPT PRC GMPS SETC |FW MB A6755
Estou tentando adaptar o codigo do Jpaulo abaixo mas não estou conseguido pois como ja tenho a tabela cria e so preciso~das informaçoes da linha 6 em diante não consigo adaptar o codigo alguem pode me ajudar
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 = "C:\teste.txt" 'caminho do arq de texto
strTabela = "temp" 'nome da tabela no banco
Delimitador = "|" 'defina aqui qual o delimitador que não quer importar
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
If Len(LinhaDoTexto) > 0 Then
If Left(LinhaDoTexto, 4) Like "4530" Then
LinhaDoTextoTemp = Mid(LinhaDoTexto, 11, 255)
LinhaDoTexto = LinhaDoTextoTemp
End If
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
sou novo no forum e tambem no VBA do ACCESS, na empresa que trabalho usamos o access para auxiliar no controle da produção importando relatorios do sistema principal para uma pasta na rede e os arquivos estavam sendo salvos em excel, para importar para o access não tenho problema mas recentimente estamos recebendo os arquivos em txt que vem com 4 linha como se como um cabeçalho e depois a palavra order ex; abaixo loga apos apalavra order tem um mumero de um documento, no Access tenho um tabela chamada coois com tudos os campos abaixo( order material e assim por diante) preciso importar para esta tabela as linhas abaixo da linha tracejada depois da palavra order lembrando que o arquivo tem 18 mil linhas aproximadamente e dez colunas.
os colegas do forum podem me ajudar.
02/22/2012 Dynamic List Display 1
-------------------------------------------------------------------------
-------------------------------------------------------------------------
|Order |Material |Order Type|Target qty|Conf. qty|Unit|System Status
-------------------------------------------------------------------------
|30005075|PIWG1330092|ZP01 | 1,000 | 0 |PC |TECO MSPT PRC CSER SETC
|30005145|72827330001|ZP02 | 454 | 0 |PC |REL PRC GMPS MACM SETC
|30005181|PIWG1330092|ZP01 | 2 | 0 |PC |REL MSPT PRC GMPS SETC
|30005188|46196238L16|ZP01 | 7,600 | 0 |PC |REL MSPT PRC GMPS SETC |FW MB A6755
Estou tentando adaptar o codigo do Jpaulo abaixo mas não estou conseguido pois como ja tenho a tabela cria e so preciso~das informaçoes da linha 6 em diante não consigo adaptar o codigo alguem pode me ajudar
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 = "C:\teste.txt" 'caminho do arq de texto
strTabela = "temp" 'nome da tabela no banco
Delimitador = "|" 'defina aqui qual o delimitador que não quer importar
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
If Len(LinhaDoTexto) > 0 Then
If Left(LinhaDoTexto, 4) Like "4530" Then
LinhaDoTextoTemp = Mid(LinhaDoTexto, 11, 255)
LinhaDoTexto = LinhaDoTextoTemp
End If
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
Última edição por cla3200pc em 26/2/2012, 19:04, editado 1 vez(es)