Senhores, boa tarde!
Parabéns pelo forum, absorvi muitas das suas explicações.
Tenho uma dúvida e estou precisando urgente no trabalho, gostaria de contar com a ajuda de vocês.
Possuo um código de exportação e está OK, porém preciso bloquear de algum jeito que seja importado duas vezes.
Postarei o código abaixo, agradecendo desde já. OBS: não achei lugar para o Excel, mas acredito que no VBA não haja tantas alterações por isso estou aqui.
Posso conseguir de 3 maneiras: 1 movendo o arquivo após importar (o problema aqui é que o arquivo não é fixo, eu seleciono o arquivo pelo application.getopenfilename e não consigo manter o nome original do arquivo após isso.
a segunda é fazendo esquema de importação por numeração: importar teste1.txt depois configurar automaticamente para só importar teste2.txt e assim por diante
ou ainda quando for efetuar a importação verificar se a data é a mesma e se for não importar o arquivo. Ai entra o problema de mais de um registro da mesma data, então ele deveria bloquear apenas de o arquivo for o mesmo e não a data, pois a data se repete dentro de um mesmo arquivo.
Segue o código abaixo. Obrigado e um abraço a todos!
Private Sub IMPORTAR_Click()
Dim cpf As String
Dim valor As String
Dim historico As String
Dim dia As String
Dim mes As String
Dim ano As String
Dim lin As String
Dim arquivo As String
Dim i As Integer
arquivo = Application.GetOpenFilename("Arquivos de Remessa Itaú (*.01), *.01")
On Error GoTo Erro
i = 0
Open arquivo For Input As #1
Do While Not EOF(1)
Line Input #1, lin
If Trim(Mid(lin, 48, 10)) <> "" Then
If Trim(Mid(lin, 48, 6)) <> "" Then
If Trim(Mid(lin, 48, 2)) = "" Then
Range("A1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = cpf
historico = Mid(lin, 50, 25)
Range("B1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = historico
valor = Str(Val(Mid(lin, 87, 18)))
Range("C1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = valor / 100
dia = Mid(lin, 81, 2)
mes = Mid(lin, 83, 2)
ano = Mid(lin, 85, 2)
Range("D1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = CDate(dia & "/" & mes & "/" & ano)
End If
Else
cpf = Mid(lin, 72, 11)
End If
End If
i = i + 1
Loop
Close #1
MsgBox "Importação concluída com sucesso!"
Erro:
End Sub
Parabéns pelo forum, absorvi muitas das suas explicações.
Tenho uma dúvida e estou precisando urgente no trabalho, gostaria de contar com a ajuda de vocês.
Possuo um código de exportação e está OK, porém preciso bloquear de algum jeito que seja importado duas vezes.
Postarei o código abaixo, agradecendo desde já. OBS: não achei lugar para o Excel, mas acredito que no VBA não haja tantas alterações por isso estou aqui.
Posso conseguir de 3 maneiras: 1 movendo o arquivo após importar (o problema aqui é que o arquivo não é fixo, eu seleciono o arquivo pelo application.getopenfilename e não consigo manter o nome original do arquivo após isso.
a segunda é fazendo esquema de importação por numeração: importar teste1.txt depois configurar automaticamente para só importar teste2.txt e assim por diante
ou ainda quando for efetuar a importação verificar se a data é a mesma e se for não importar o arquivo. Ai entra o problema de mais de um registro da mesma data, então ele deveria bloquear apenas de o arquivo for o mesmo e não a data, pois a data se repete dentro de um mesmo arquivo.
Segue o código abaixo. Obrigado e um abraço a todos!
Private Sub IMPORTAR_Click()
Dim cpf As String
Dim valor As String
Dim historico As String
Dim dia As String
Dim mes As String
Dim ano As String
Dim lin As String
Dim arquivo As String
Dim i As Integer
arquivo = Application.GetOpenFilename("Arquivos de Remessa Itaú (*.01), *.01")
On Error GoTo Erro
i = 0
Open arquivo For Input As #1
Do While Not EOF(1)
Line Input #1, lin
If Trim(Mid(lin, 48, 10)) <> "" Then
If Trim(Mid(lin, 48, 6)) <> "" Then
If Trim(Mid(lin, 48, 2)) = "" Then
Range("A1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = cpf
historico = Mid(lin, 50, 25)
Range("B1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = historico
valor = Str(Val(Mid(lin, 87, 18)))
Range("C1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = valor / 100
dia = Mid(lin, 81, 2)
mes = Mid(lin, 83, 2)
ano = Mid(lin, 85, 2)
Range("D1").Select
ActiveCell.End(xlDown).Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = CDate(dia & "/" & mes & "/" & ano)
End If
Else
cpf = Mid(lin, 72, 11)
End If
End If
i = i + 1
Loop
Close #1
MsgBox "Importação concluída com sucesso!"
Erro:
End Sub