|
Postada em 31/07/2008 19:35 hs
E ai galera
Estou com o seguinte problema, tenho varios arquivos que estao com registros separados por ponto e virgula ou por espacos, preciso ler estes arquivos e encaixar cada campo na coluna conforme layout pre definido, minha duvida é como faço para o vb ler estes campos no arquivo texto e gerar um outro arquivo dentro do layout definido.
|
|
|
|
CSRocha
|
BRASILIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 31/07/2008 21:33 hs
Você vai ter que abrir no modo INPUT, ler cada registro tratar cada linha (registro) com a função SPLIT, que dividirá a linha em outro array.
Supondo que tenha uma linha do arquivo (dê exemplos do teu caso):
strLinha = "Paulo José;Brasília;DF;61-3390-0999"
str1 = Split(strLinha,";") For n = Lbound(str1) to Ubound(str1) debug.print str1(n) <---- aqui você formata como pretende e grava em outro arquivo Next n
Basicamente é isso. Dê mais detalhes do teu layout e arquivos a serem tratados.
|
|
|
|
Postada em 01/08/2008 02:25 hs
Basicamente é o seguinte, ja possuimos um layout definido, por exemplo o codigo do cliente possui 7 caracteres e em seguida vem o cpf com 15 caracteres e na coluna seguinte o nome, mas so que os arquivos que recebo e preciso importar para o banco nao estao neste layout, eles estao vindo separados por ponto e virgula ou outro caracter como o | por exemplo, o que preciso fazer, preciso a partir deste arquivo ler as linhas, e gerar em outro arquivo estes dados dentro do layout especificado, preciso que o vb leia estas linhas e identifique os campos e ponha no layout especificado para depois sim importar para base.
|
|
|
CSRocha
|
BRASILIA DF - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 01/08/2008 12:36 hs
Fiz um exemplo aqui, baseado em tuas informações.
1. Criei um arquivo TXT com dados imaginários, que teria esse conteúdo:
012456;098.786.456-99;José Maria da Silva 012345;736.234.455-99;Antonio carlos Pereira 01234;262.234.122-99;Maria Helana Dourado
Salve esses dados como origem.txt, na pasta que preferir.
2. Faça esse projeto no VB:
' na seção geral Dim strLInhas As String, str1 As Variant Dim str2(10), str3(10)
' coloque um botão para acionar a rotina: Private Sub Command1_Click() Dim t1 As Integer, t2 As Integer, t3 As Integer Dim aux1 As String, aux2 As String, aux3 As String Open "c: emporigem.txt" For Input As #1 Open "c: empdestino.txt" For Output As #2 conta = 0 str3(0) = 7: str3(1) = 15: str3(2) = 50 While Not EOF(1) Input #1, strLInhas str1 = Split(strLInhas, ";") ' o delimitador deve ser o caractere dos teus arquivos. For n = LBound(str1) To UBound(str1) t1 = Len(str1(n)): aux1 = str1(n) & Space(str3(n) - Len(str1(n))) aux2 = aux1 str2(conta) = str2(conta) & aux2 Next n Print #2, str2(conta) conta = conta + 1 Wend Close #1 Close #2 MsgBox "Fim do processo" End End Sub
Atente que no meu caso usei a pasta c: emp para ler e gravar os arquivos. Mude nas 2 linhas OPEN de acordo com o seu path.
Esta linha (str3(0) = 7: str3(1) = 15: str3(2) = 50) tem o tamnho dos campos que ficarão na gravação final. Você deverá estudar o teu layout e informar cada um com o numero de caracteres pretendidos.
Coloquei espaços depois dos dados. Para colocar ANTES, inverta esse trecho:
t1 = Len(str1(n)): aux1 = str1(n) & Space(str3(n) - Len(str1(n))) para t1 = Len(str1(n)): aux1 = Space(str3(n) - Len(str1(n))) & str1(n)
Qualquer duvida, chame...
|
|
|
|