Wata Posted December 9, 2020 Share Posted December 9, 2020 Tenho uma macro que gera um arquivo texto, porém toda vez que é acionada sobrescreve o arquivo. Gostaria que cada vez que a macro fosse acionada, gerasse um arquivo texto na sequência (Arquivo1.txt; Arquivo2.txt...). Alguém aí consegue fazer a modificação??? Sub GravarArquivoTxt() Open Range("N3").Value For Output As 1 Range("O9").Select Do While ActiveCell.Value <> "" Print #1, ActiveCell.Value Cells(ActiveCell.Row + 1, ActiveCell.Column).Select Loop MsgBox "Arquivo gerado com sucesso!", vbInformation, "Ok" Close 1 End Sub Explicando a macro: Na célula N3 é necessário colocar o endereço e nome do arquivo, por exemplo C:/Arquivo.txt Tudo que estiver na coluna O, a partir da célula O9(inclusive) vai entrar no arquivo texto. Obrigado. ... 1 Quote Link to comment Share on other sites More sharing options...
FF882007 Posted December 9, 2020 Share Posted December 9, 2020 30 minutos atrás, Wata disse: Alguém aí consegue fazer a modificação??? Sub GravarArquivoTxt() Dim i As Integer Open Range("N3").Value & Range("O3").Value & ".txt" For Output As 1 i = Range("O3").Value + 1 Range("O3").Value = i Range("O9").Select Do While ActiveCell.Value <> "" Print #1, ActiveCell.Value Cells(ActiveCell.Row + 1, ActiveCell.Column).Select Loop MsgBox "Arquivo gerado com sucesso!", vbInformation, "Ok" Close 1 End Sub 1 1 Quote Link to comment Share on other sites More sharing options...
FF882007 Posted December 9, 2020 Share Posted December 9, 2020 33 minutos atrás, Wata disse: Na célula N3 é necessário colocar o endereço e nome do arquivo, por exemplo C:/Arquivo.txt em N3 coloque c:\arquivo sem ".txt" 1 Quote Link to comment Share on other sites More sharing options...
Wata Posted December 9, 2020 Author Share Posted December 9, 2020 11 minutos atrás, FF882007 disse: Sub GravarArquivoTxt() Dim i As Integer Open Range("N3").Value & Range("O3").Value & ".txt" For Output As 1 i = Range("O3").Value + 1 Range("O3").Value = i Range("O9").Select Do While ActiveCell.Value <> "" Print #1, ActiveCell.Value Cells(ActiveCell.Row + 1, ActiveCell.Column).Select Loop MsgBox "Arquivo gerado com sucesso!", vbInformation, "Ok" Close 1 End Sub 8 minutos atrás, FF882007 disse: em N3 coloque c:\arquivo sem ".txt" Funcionando perfeitamente! Valeu. ... Quote Link to comment Share on other sites More sharing options...
Wata Posted March 4, 2021 Author Share Posted March 4, 2021 Estou com problemas com essa macro de gravar txt. O que estou fazendo é gerar algumas linhas aleatórias e para ficar atualizando essas linhas utilizo a macro abaixo: Sub ATUALIZAR() ' ' ATUALIZAR Macro ' ' Range("A1").Select ActiveCell.FormulaR1C1 = "" Range("A2").Select End Sub Após isso aciono essa macro para gravar o txt. O problema é que quando aciono a macro para gravar o txt as linhas que foram geradas aleatoriamente são atualizadas e só após isso é salvo o txt . Preciso que quando acione a macro gravar o txt, não atualize as linhas. As linhas só devem ser atualizadas quando acionada essa macro (acima) ATUALIZAR. Alguém sabe como resolver? Obrigado ... Quote Link to comment Share on other sites More sharing options...
Wata Posted March 11, 2021 Author Share Posted March 11, 2021 @Pedepano O que eu quero é, a cada vez que a macro ATUALIZAR for acionada, gerar uma linha (matriz) de 25dz. com arranjo aleatório. Essa matriz irá formar um desdobramento e caso esse desdobramento gere uma condição específica (uma linha do desdobramento com um atraso de, por exemplo, 100 ou mais concursos; veja isso ), será acionada a macro GravarArquivoTxt, e o desdobramento todo será salvo em txt. Quero gerar arquivos txt somente quando uma linha muito atrasada (do desdobramento) aparecer. Na solução que vc apresentou, pelo que eu entendi, cada processo vai gerar um arquivo txt... ... Quote Link to comment Share on other sites More sharing options...
FF882007 Posted March 11, 2021 Share Posted March 11, 2021 21 minutos atrás, Wata disse: Quero gerar arquivos txt somente quando uma linha muito atrasada (do desdobramento) aparecer. @WataBoa noite é preciso chamar a função "GravarArquivoTxt()" quando identificar o atraso. Ex em vermelho no spoiler Em 03/03/2021 em 23:07, Wata disse: Sub ATUALIZAR() ' ' ATUALIZAR Macro ' ' Range("A1").Select ActiveCell.FormulaR1C1 = "" Range("A2").Select if "celula com a quantidade de atrazo" >= 100 then call GravarArquivoTxt() end if End Sub boa sorte 1 Quote Link to comment Share on other sites More sharing options...
Wata Posted March 11, 2021 Author Share Posted March 11, 2021 @Pedepano @FF882007 Vcs estão muitos passos a minha frente. Estão fazendo tudo direto e somente com o EXCEL. Confesso que nem tinha pensado nessa possibilidade... Junto com o EXCEL estou utilizando um programa chamado JITBIT-MACRORECORDER. Esse programa grava tudo que vc faz com o mouse, e permite algumas comparações (de imagens, etc). Depois é só executar isso e deixar reproduzindo no automático até achar o que vc procura. Vou ver o que consigo aqui... Valeu. ... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.