Notifications
Clear all

Gerar arquivo TXT

5 Posts
3 Usuários
0 Reactions
1,066 Visualizações
(@everson-m)
Posts: 4
Active Member
Topic starter
 

Boa tarde,

Tenho uma planilha em excel contendo várias Chaves de NFe. Preciso gerar um arquivo de consulta em TXT numa determinada pasta para consultar as Chaves.

Na coluna "Chave_Nfe" estão as chaves a serem consultadas e na coluna "Cod_Consulta" está o comando a ser gerado em TXT.

Preciso gerar o TXT da seguinte forma:

1. Pega o valor da primeira célula da coluna "Cod_Consulta" e gera o arquivo TXT em "C:ACBrNFeMonitorENTNFE.txt";
(obs.: Quando gerar o arquivo ENTNFE.TXT um outro sistema que utilizo vai processar o comando e em seguida deletar o arquivo)

2. Aguarda cerca de 2 segundos;

3. Verificar se o arquivo gravado em "C:ACBrNFeMonitorENTNFE.txt" já foi deletado;

4. Pegar o valor da segunda célula da coluna "Cod_Consulta" e gera o arquivo TXT em "C:ACBrNFeMonitorENTNFE.txt";

E assim por diante.....

Segue a planilha que utilizado, mas a macro que tenho só gerar em TXT o valor apenas de uma célula e não percorrer as demais células.

 
Postado : 02/05/2014 10:16 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

E naão entendi muto bem, mas faça os testes.

Sub AleVBA_11516()
    Dim a, i As Long, e
    a = Range("a1").CurrentRegion.Columns("A:B").Value
    With CreateObject("Scripting.Dictionary")
        For i = 2 To UBound(a, 1)
            .Item(a(i, 2)) = .Item(a(i, 2)) & vbCrLf & a(i, 1)
        Next
        For Each e In .keys
            Open ThisWorkbook.Path & "" & e & ".txt" For Output As #1
                Print #1, Mid$(.Item(e), 3)
            Close #1
        Next
    End With
End Sub

Será salvo em um local padrão, talvez (Downloads), ou procure por NFE.ConsultarNFe(25101209188305000143550010000055921000055926) e achará o restante dos arqquivos criados
Att

 
Postado : 02/05/2014 10:53 am
(@everson-m)
Posts: 4
Active Member
Topic starter
 

Obrigado pela resposta!!! No entanto precisaria que fosse realizado a seguinte rotina:

1. O nome do arquivo deve ser sempre ENTNFE.txt
2. Aguardasse um intervalo de 2 segundo para pegar o valor da segunda linha e gerar o TXT e assim por diante...

 
Postado : 02/05/2014 11:30 am
(@d1nho)
Posts: 22
Eminent Member
 
Dim Timer
Const IntervaloSegundos = 2 '2 segundos
Sub Iniciar()
Timer = Now + TimeSerial(0, 0, IntervaloSegundos)
Application.OnTime EarliestTime:=Timer, Procedure:="Procedure", schedule:=True
End Sub
Sub Parar()
On Error Resume Next
Application.OnTime EarliestTime:=Timer, Procedure:="Procedure", schedule:=False
End Sub
 
 
Sub Procedure()
Call Iniciar
Call XTo_txt1
    
End Sub
Sub XTo_txt1()
On Error Resume Next
Dim ENTNFE As Long
Dim UltLinha As Integer
Dim TotalLinhas As Long

UltLinha = Sheets("Plan1").Range("I1").Value

ENTNFE = FreeFile

Open "C:ACBrNFeMonitorENTNFE.txt" For Output As ENTNFE

TotalLinhas = Sheets("Plan1").Cells(Rows.Count, 2).End(xlUp).Row

For i = UltLinha To UltLinha
    If Cells(i, 2).Value = "" Then
       Sheets("Plan1").Range("I1").Value = 2
       Parar
     Else
       Print #ENTNFE, Cells(i, 2).Value
       Sheets("Plan1").Range("C1").Value = Cells(i, 2).Value
       Sheets("Plan1").Range("I1").Value = Sheets("Plan1").Range("I1").Value + 1
     End If
Next i

Close #ENTNFE

End Sub

Não esquecer de dar permissão de leitura e escrita na pasta do acbrmonitor na unidade c: , só acho que o timeout esta "justo" demais 2 segundos não é muito pouco?
Você esta fazendo Manifestação do destinatário?

 
Postado : 02/05/2014 1:32 pm
(@everson-m)
Posts: 4
Active Member
Topic starter
 

Valeu!!! Era simplesmente o que eu precisava! Os 2 segundos é +/- o tempo que sistema demora pra processar o comando e ficar pronto pra receber outro.

Recebo muitos XML's de Nota Fiscal Eletrônica de fornecedores. No entanto já verifiquei que alguns XML's, estão cancelados pelo emitente. Seria inviável consultar nota a nota. Com essa rotina, o "ACBrNFeMonitor" faz a consulta da situação pra mim.Talvez seja até um pouco amador, mas atende muito minha necessidade.

Obrigado pela ajuda!!!

 
Postado : 05/05/2014 5:56 am