PEGAR LINHA DE UM ARQUIVO E GRAVAR EM OUTRO
Olá todos.
Estou com um problema aqui no VB6.
O que eu quero fazer:
Quero abrir um arquivo que tem varias linhas com varias informações em cada linha, essas informações estão separadas por [Ô],[Ô] (Virgula), ao abrir esse arquivo, o programa passa por cada linha e depois cria um novo arquivo de texto e grava todas as linhas nesse novo arquivo.
O código que eu já fiz:
Dim linha1 As String
Dim i As Integer, F As Integer
i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As #F
Print #F, linha1
Wend
Close #F
Como podem ver no código, eu faço um while para passar pelo arquivo até a ultima linha, em cada linha que ele passa, ele pega a linha e logo em seguida abre o novo arquivo e já grava essa linha nele, esse é o problema, pois ao tentar abrir ele da essa mensagem [Ô]File already open[Ô] , Alguém poderia ver?
Obrigado.
Estou com um problema aqui no VB6.
O que eu quero fazer:
Quero abrir um arquivo que tem varias linhas com varias informações em cada linha, essas informações estão separadas por [Ô],[Ô] (Virgula), ao abrir esse arquivo, o programa passa por cada linha e depois cria um novo arquivo de texto e grava todas as linhas nesse novo arquivo.
O código que eu já fiz:
Dim linha1 As String
Dim i As Integer, F As Integer
i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As #F
Print #F, linha1
Wend
Close #F
Como podem ver no código, eu faço um while para passar pelo arquivo até a ultima linha, em cada linha que ele passa, ele pega a linha e logo em seguida abre o novo arquivo e já grava essa linha nele, esse é o problema, pois ao tentar abrir ele da essa mensagem [Ô]File already open[Ô] , Alguém poderia ver?
Obrigado.
Dim linha1 As String
Dim i As Integer, F As Integer, G as Integer
i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo
[txt-color=#e80000]G = FreeFile[/txt-color]
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As[txt-color=#e80000] #G[/txt-color]
Print #G, linha1
Wend
Close #F
voce não pode abrir dois arquivos no mesmo buffer
Dim i As Integer, F As Integer, G as Integer
i = 0
F = FreeFile [ô]Essa linha aqui é para armazenar a numeração livre para abertura do arquivo
[txt-color=#e80000]G = FreeFile[/txt-color]
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As[txt-color=#e80000] #G[/txt-color]
Print #G, linha1
Wend
Close #F
voce não pode abrir dois arquivos no mesmo buffer
Há esqueci de fechar o segundo arquivo:
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As #G
Print #G, linha1
Close #G
Wend
Close #F
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As #G
Print #G, linha1
Close #G
Wend
Close #F
Veja se te ajuda, já precisei fazer o mesmo que você postou, mas não achei a rotina, não foge muito do que eu postei
Set ofs = New Scripting.FileSystemObject
sTemp = App.Path & [Ô]\[Ô] & ofs.GetTempName
NomeArquivo = File1.FileName
sCaminho = Dir1 & [Ô]\[Ô] & NomeArquivo
If ofs.FileExists(sCaminho) = True Then
While Not oTS.AtEndOfStream = True
sLinha = Empty
sLinha = oTS.ReadLine
slinha = dados
gerar novo aquivo(passar os dados como parametro)
oTSB.WriteLine sLinha
wend
private sub gerar novo arquivo(dados)
arqC = FreeFile
Open [Ô]NOVO ARQUIVO.txt[Ô] For Append As #arqC
Print #arqC, dados
Close #arqC
end sub
Set ofs = New Scripting.FileSystemObject
sTemp = App.Path & [Ô]\[Ô] & ofs.GetTempName
NomeArquivo = File1.FileName
sCaminho = Dir1 & [Ô]\[Ô] & NomeArquivo
If ofs.FileExists(sCaminho) = True Then
While Not oTS.AtEndOfStream = True
sLinha = Empty
sLinha = oTS.ReadLine
slinha = dados
gerar novo aquivo(passar os dados como parametro)
oTSB.WriteLine sLinha
wend
private sub gerar novo arquivo(dados)
arqC = FreeFile
Open [Ô]NOVO ARQUIVO.txt[Ô] For Append As #arqC
Print #arqC, dados
Close #arqC
end sub
Citação::
Há esqueci de fechar o segundo arquivo:
Open [Ô]teste1.txt[Ô] For Input As #F
While Not EOF(F)
Line Input #F, linha1
Open [Ô]teste2.txt[Ô] For Append As #G
Print #G, linha1
Close #G
Wend
Close #F
Continua dando a mesma coisa, [Ô]File already open[Ô]
Eu já tentei mudar isso também, mas da a mesma coisa.
é assim
Dim A As Integer, B As Integer
Dim Linha As String
A = FreeFile
B = FreeFile
Open [Ô]C: este.txt[Ô] For Input As #A
Open [Ô]c:\cópia.txt[Ô] For Output As #B
Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B
Citação::
é assimDim A As Integer, B As Integer
Dim Linha As String
A = FreeFile
B = FreeFile
Open [Ô]C: este.txt[Ô] For Input As #A
Open [Ô]c:cópia.txt[Ô] For Output As #B
Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B
Ainda continua dando o mesmo erro =x
parece que ele só abre 1 por vez =x
Colega,
Uma pequena mudança no código, porque entre atribuir o FreeFile à A e também para B tem que abrir os arquivos, para que o FreeFile mude.
E, claro, tomar cuidado com o path dos arquivos, sobretudo em Open [Ô]C: este.txt[Ô] For Input As #A para ter certeza que o arquivo está no path informado no comando Open.
Tudo de bom.
Uma pequena mudança no código, porque entre atribuir o FreeFile à A e também para B tem que abrir os arquivos, para que o FreeFile mude.
Dim A As Integer, B As Integer
Dim Linha As String
A = FreeFile
Open [Ô]C: este.txt[Ô] For Input As #A
B = FreeFile
Open [Ô]c:\cópia.txt[Ô] For Output As #B
Do While Not EOF(A)
Line Input #A, Linha
Print #B, Linha
Loop
Close #A
Close #B
E, claro, tomar cuidado com o path dos arquivos, sobretudo em Open [Ô]C: este.txt[Ô] For Input As #A para ter certeza que o arquivo está no path informado no comando Open.
Tudo de bom.
é isso mesmo Euzébio
Tópico encerrado , respostas não são mais permitidas