ARQUIVO TEXTO
Ola pessoal estou com uma duvida tenho um sistema de automação onde tenho que ler um arquivo texto excultar algumas tarefas do arquivo texto e quando terminar a tarefa tem que devolver o resultado da tarefa bom esse sistema esta ok mas quando eu termino a tarefa eu tenho que copiar esse arquivo texto e apagar ele mas o windows fala que o arquivo está em uso pelo sistema, então tenho que fechar o sistema para fazer isso como faço poder fazer isso sem fechar o sistema
Poste a rotina completa de processamento do arquivo de texto.
Bom dia Amigo!
Como tu esta abrindo esse arquivo?
Se for assim [Ô]Open [Ô]C:\Arquivo.Txt[Ô] For Append As #1[Ô], tu vai ter que fechar esse arquivo pra poder apagar ele...
é só colocar:
Close #1
Como disse o Tecla, coloca a rotina ai que fica mais facil gente te ajudar...
Como tu esta abrindo esse arquivo?
Se for assim [Ô]Open [Ô]C:\Arquivo.Txt[Ô] For Append As #1[Ô], tu vai ter que fechar esse arquivo pra poder apagar ele...
é só colocar:
Close #1
Como disse o Tecla, coloca a rotina ai que fica mais facil gente te ajudar...
Estou abrindo o arquivo texto assim
[th]
arquivo texto | [/th]
CAMINHO = App.Path & [Ô]\Reporte_Ordem.txt[Ô] [ô]MsgBox Len(caminho) ind = 185 Close #F If Dir(CAMINHO) = [Ô][Ô] Then LerArquivo = False Open CAMINHO For Input As F [ô]abre o arquivo texto Line Input #F, LINHA Tamanho = Len(LINHA) Tamanho = Tamanho + 2 res = Len(LINHA) / ind If Tamanho < 185 Then Exit Function ReDim nomeOrdem(res) ReDim sData(res) ReDim zeroEsq(res) ReDim QtdMassa(res) ReDim Espaco1(res) ReDim qtdRepete(res) ReDim Espaco2(res) ReDim noTambor(res) ReDim Espaco3(res) ReDim nomeReceita(res) ReDim Espaco4(res) ReDim nomArquivo(res) ReDim Espaco5(res) ReDim Espaco6(res) CancelaReporterOrdem res = (Len(LINHA) + 2) res = Tamanho / ind I = 1 N = 1 T = 0 AR = 1 res = Len(LINHA) / ind I = 1 N = 1 T = 1 AR = 1 Do While Not EOF(F) Line Input #F, LINHA nomeOrdem(T) = Mid(LINHA, N, 41) N = N + 41 sData(T) = Format(Now, [Ô]DDMMYYYY[Ô]) N = N + 8 Espaco1(T) = Format(Mid(LINHA, N, 3), [Ô]000[Ô]) N = N + 3 QtdMassa(T) = Mid(LINHA, N, 5) N = N + 5 Espaco2(T) = Mid(LINHA, N, 42) N = N + 42 qtdRepete(T) = Mid(LINHA, N, 1) If qtdRepete(T) <> 1 Then Exit Function N = N + 1 Espaco3(T) = Mid(LINHA, N, 19) N = N + 19 noTambor(T) = Mid(LINHA, N, 2) N = N + 2 Espaco4(T) = Mid(LINHA, N, 14) N = N + 14 nomeReceita(T) = Mid(LINHA, N, 6) N = N + 6 Espaco5(T) = Mid(LINHA, N, 42) N = 1 T = T + 1 Loop ind = 185 [ô]Line Input #F, LINHA Tamanho = Len(LINHA) Tamanho = Tamanho + 2 res = Len(LINHA) / ind I = 1 N = 1 T = 0 AR = 1 Close #F |
Verifique se sua Variavel #F não está sendo alterada em algum outro Lugar..eu
Então para Testar
Mude o #F para #1 pra testar (pois assim fica valor FIXO).
Em todo o codigo..
Então para Testar
Mude o #F para #1 pra testar (pois assim fica valor FIXO).
Em todo o codigo..
ok essa rotina eu esquisa de diser abro outro arquivo chamado arquivo_receita.txt do mesmo modo.
Então é isso o #F ta ficando Preso a outra rotina, faça o teste como disse
Segue exemplo:
Dim intFreeFile As Integer
Dim strCaminho As String
Dim strAux As String
strCaminho = [Ô]C:\Teste.txt[Ô]
intFreeFile = FreeFile
Open strCaminho For Input As #intFreeFile
Do While Not EOF(intFreeFile)
Line Input #intFreeFile, strAux
[ô].
[ô].
[ô].
[ô].
Loop
Close #intFreeFile
[ô]*** DELETA O ARQUIVO
If strCaminho <> [Ô][Ô] Then
If Dir$(strCaminho, vbNormal) <> [Ô][Ô] Then
Kill strCaminho
End If
End If
Ola pessoal deslculpe a demora consegui resolver apenas troquei o nome dos arquivo em vez de chamar os dois arquivo de F eu chamo o primeiro de F e 2 de 1 de deu certo
Tópico encerrado , respostas não são mais permitidas