Ir ao conteúdo

Excel Codigo VBA Para remover números aleatórios de nome de arquivos


Ir à solução Resolvido por Midori,

Posts recomendados

Postado

Salve, mestres!!

 

Estou quebrando a cabeça para renomear arquivos de relatórios que são extraídos automaticamente de um site, mas que são gerados de acordo com uma ID inserida na página.

 

Ex: Name "C:\Users\" & Environ("UserName") & "\Downloads\AlunosTurmaID50978.csv" As "C:\Users\" & Environ("UserName") & "\Downloads\AlunosTurmaID.csv"

 

Já tentei usar "*", "#" e "?", mas nada funciona. Alguém pode me dar uma luz??

Postado

@Iomari Silva Roza Junior Foi só um exemplo de como remover o número de parte do nome do arquivo...

 

O Msgbox foi só para mostrar como ficaria o novo nome.

 

Veja que usei a função Left, a sintaxe é: Function Left(String, Length As Long)

 

Com essa função peguei apenas o texto "AlunosTurmaID" do nome do arquivo e depois concatenei com "csv".

 

Outro exemplo, com base no que postou ficaria assim,

 

Sub Macro()
    Dim Pasta   As String
    Dim Arquivo As String

    Pasta = "C:\Users\" & Environ("UserName") & "\Downloads\"
    Arquivo = "AlunosTurmaID50978.csv"
    
    Name Pasta & Arquivo As Pasta & Left(Arquivo, 13) & ".csv"
End Sub

 

 

Postado
51 minutos atrás, Midori disse:

50978

@Midori , essa ID é só um exemplo. Como eu disse no primeiro post, os arquivos são gerados de acordo com a ID que solicitamos o relatórios, ou seja, os relatórios sempre são extraídos com uma sequência numérica final aleatória e, para automatizar uma macro, preciso padronizar esse aquivo, removendo essa sequência numérica aleatória final. 

Postado

@Iomari Silva Roza Junior Sim, a ID é só um exemplo e fiz macro considerando a possibilidade da sequencia final aleatória.

 

No código não importa se a sequencia final é aleatória ou não.

 

A macro considera o padrão de nome do arquivo original como: Começando com "AlunosTurmaID" e seguido da sequencia numérica.

 

Por exemplo, o nome que você postou é: AlunosTurmaID50978.csv  

 

Mas poderia ser: AlunosTurmaID123.csv ou AlunosTurmaID098765432.csv ou qualquer outra sequencia após AlunosTurmaID, certo?

 

A macro vai remover a sequencia da mesma forma.

 

Chegou a testar o código?

Postado

Sub ExcluiNúmeros()
 Dim objRegex, nomeArq As String
  Set objRegex = CreateObject("vbscript.regexp")
  nomeArq = "C:\Users\" & Environ("UserName") & "\Downloads\AlunosTurmaID50978.csv"
  With objRegex
   .Global = True
   .Pattern = "[^\D]+"
   nomeArq = .Replace(nomeArq, vbNullString)
  End With
 MsgBox nomeArq '<< neste ponto utilize a variável nomeArq, já sem os números, para o que precisar
End Sub

Postado

@Midori Inseri seu código no final do evento. Ele em separado funciona perfeitamente, porém, após o evento, quando ele não deleta o arquivo, não o renomeia.

 

Segue o código do evento:

 

 

Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
            (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim ID As Boolean, ieForm
Dim ID_ As Integer
Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2

Sub Login()

Worksheets("Dashboard").Activate
ActiveSheet.Range("A13").Select

nome = InputBox("Qual a ID da Turma")
linha = Range("A1").End(xlDown).Row + 7
Cells(linha, 1) = nome

Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = "gera.atento.com.br"
Set oBrowser = New InternetExplorer
   oBrowser.Silent = True
   oBrowser.timeout = 60
   oBrowser.Navigate sURL
   oBrowser.Visible = True
   oBrowser.TheaterMode = True
   
   Do
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

SetCursorPos 711, 402   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 23, 139   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 194, 254   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 174, 300   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 117, 194   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
   
  Set HTMLDoc = oBrowser.Document

HTMLDoc.all.ID.Value = nome
   
   SetCursorPos 1383, 349   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 1433, 477   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 2)
  
  SetCursorPos 1396, 509   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 1111, 877  'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
     
 oBrowser.Quit
 
 Dim Pasta   As String
    Dim Arquivo As String

    Pasta = "C:\Users\" & Environ("UserName") & "\Downloads\"
    Arquivo = "AlunosTurmaID50978.csv"
    
    Name Pasta & Arquivo As Pasta & Left(Arquivo, 13) & ".csv"
     
Err_Clear:

Resume Next
End Sub

 

 

Postado

@Iomari Silva Roza Junior Como a numeração é aleatória a variável Arquivo tem que receber o nome do arquivo correto.

 

Da forma que está o código ele só procura pelo arquivo AlunosTurmaID50978 que provavelmente não deve existir, já que a numeração muda toda vez que o arquivo é extraído, não é mesmo?

 

Para atribuir o nome do arquivo que foi extraído dá para fazer um loop no diretório para procurar, fiz isso neste trecho que copia e cola como AlunosTurmaID.csv (sobrescrevendo se houver outro com o mesmo nome).

 

For Each Arquivo In Fso.GetFolder(Pasta).Files
    If Left(Arquivo.Name, 13) = "AlunosTurmaID" Then
        Arquivo.Copy Pasta & "AlunosTurmaID.csv", True
        Exit For
    End If
Next Arquivo

 

 

O código completo com as novas instruções, veja se resolve,

 

Se der certo é melhor mudar para a função Move no lugar de Copy: Arquivo.Move Pasta & "AlunosTurmaID.csv"

 

 

 Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
            (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim ID As Boolean, ieForm
Dim ID_ As Integer
Dim Fso     As Object
Dim Arquivo As Object

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2

Sub Login()

Worksheets("Dashboard").Activate
ActiveSheet.Range("A13").Select

nome = InputBox("Qual a ID da Turma")
linha = Range("A1").End(xlDown).Row + 7
Cells(linha, 1) = nome

Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = "gera.atento.com.br"
Set oBrowser = New InternetExplorer
   oBrowser.Silent = True
   oBrowser.timeout = 60
   oBrowser.Navigate sURL
   oBrowser.Visible = True
   oBrowser.TheaterMode = True
   
   Do
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

SetCursorPos 711, 402   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 23, 139   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 194, 254   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 174, 300   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 117, 194   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
   
  Set HTMLDoc = oBrowser.Document

HTMLDoc.all.ID.Value = nome
   
   SetCursorPos 1383, 349   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 1433, 477   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 2)
  
  SetCursorPos 1396, 509   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 1111, 877  'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
     
 oBrowser.Quit
 
    Set Fso = CreateObject("Scripting.FileSystemObject")
   
    Pasta = "C:\Users\" & Environ("UserName") & "\Downloads\"
    
    For Each Arquivo In Fso.GetFolder(Pasta).Files
        If Left(Arquivo.Name, 13) = "AlunosTurmaID" Then
            Arquivo.Copy Pasta & "AlunosTurmaID.csv", True
            Exit For
        End If
    Next Arquivo

Err_Clear:

Resume Next
End Sub

 

Postado
1 minuto atrás, Iomari Silva Roza Junior disse:

Se já houver um arquivo no padrão mencionado na pasta, a macro executa a função no arquivo existente, e não no criado (extraído do site).

Da forma que você postou a dúvida deu a entender que o arquivo sempre era salvo no padrão de nome: "AlunosTurmaID" seguido pela numeração.

 

Não é isso que acontece?

 

No nome do arquivo não tem nenhum padrão específico? Dê um exemplo de alguns nomes que o arquivo original pode ter.

Postado

@Iomari Silva Roza Junior  O original continua com a numeração porque a macro só copia (para AlunosTurmaID.csv).

 

Fiz uma alteração no código, apague (ou mova) todos os arquivos extraídos da pasta (inclusive AlunosTurmaID.csv se tiver) e faça um teste.

 

Agora a macro vai mover (o arquivo extraído para AlunosTurmaID.csv).

 

Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
            (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim ID As Boolean, ieForm
Dim ID_ As Integer
Dim Fso     As Object
Dim Arquivo As Object

Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2

Sub Login()

Worksheets("Dashboard").Activate
ActiveSheet.Range("A13").Select

nome = InputBox("Qual a ID da Turma")
linha = Range("A1").End(xlDown).Row + 7
Cells(linha, 1) = nome

Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = "gera.atento.com.br"
Set oBrowser = New InternetExplorer
   oBrowser.Silent = True
   oBrowser.timeout = 60
   oBrowser.Navigate sURL
   oBrowser.Visible = True
   oBrowser.TheaterMode = True
   
   Do
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

SetCursorPos 711, 402   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 23, 139   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 194, 254   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 174, 300   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 117, 194   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
   
  Set HTMLDoc = oBrowser.Document

HTMLDoc.all.ID.Value = nome
   
   SetCursorPos 1383, 349   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 1433, 477   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 2)
  
  SetCursorPos 1396, 509   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 1111, 877  'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
     
 oBrowser.Quit
 
    Set Fso = CreateObject("Scripting.FileSystemObject")
   
    Pasta = "C:\Users\" & Environ("UserName") & "\Downloads\"
    
    For Each Arquivo In Fso.GetFolder(Pasta).Files
        If Left(Arquivo.Name, 13) = "AlunosTurmaID" Then
            Arquivo.Move Pasta & "AlunosTurmaID.csv"
            Exit For
        End If
    Next Arquivo

Err_Clear:

Resume Next
End Sub

 

  • Solução
Postado

@Iomari Silva Roza Junior  Tenta assim,

 

A macro vai ficar em loop até conseguir mover o arquivo.

 

 Declare Function apiShowWindow Lib "user32" Alias "ShowWindow" _
            (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Dim HTMLDoc As HTMLDocument
Dim oBrowser As InternetExplorer
Dim ID As Boolean, ieForm
Dim ID_ As Integer
Dim Fso     As Object
Dim Arquivo As Object
Dim ArquivoGerado   As Boolean


Global Const SW_MAXIMIZE = 3
Global Const SW_SHOWNORMAL = 1
Global Const SW_SHOWMINIMIZED = 2

Sub Login()

Worksheets("Dashboard").Activate
ActiveSheet.Range("A13").Select

nome = InputBox("Qual a ID da Turma")
linha = Range("A1").End(xlDown).Row + 7
Cells(linha, 1) = nome

Dim oHTML_Element As IHTMLElement
Dim sURL As String
On Error GoTo Err_Clear
   sURL = "gera.atento.com.br"
Set oBrowser = New InternetExplorer
   oBrowser.Silent = True
   oBrowser.timeout = 60
   oBrowser.Navigate sURL
   oBrowser.Visible = True
   oBrowser.TheaterMode = True
   
   Do
Loop Until oBrowser.ReadyState = READYSTATE_COMPLETE

Set HTMLDoc = oBrowser.Document

SetCursorPos 711, 402   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 23, 139   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 194, 254   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 174, 300   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 117, 194   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
   
  Set HTMLDoc = oBrowser.Document

HTMLDoc.all.ID.Value = nome
   
   SetCursorPos 1383, 349   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
   Application.Wait Now + TimeSerial(0, 0, 1)
  
  SetCursorPos 1433, 477   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 2)
  
  SetCursorPos 1396, 509   'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  
  Application.Wait Now + TimeSerial(0, 0, 4)
  
  SetCursorPos 1111, 877  'Local do Clique, em X e Y.
 
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
     
 oBrowser.Quit
     
    ArquivoGerado = False
    
    Set Fso = CreateObject("Scripting.FileSystemObject")
   
    Pasta = "C:\Users\" & Environ("UserName") & "\Downloads\"

PROCURAR_ARQUIVO:
    For Each Arquivo In Fso.GetFolder(Pasta).Files
        If Arquivo.Name <> "AlunosTurmaID.csv" Then
            If Left(Arquivo.Name, 13) = "AlunosTurmaID" Then
                Arquivo.Move Pasta & "AlunosTurmaID.csv"
                    If Fso.FileExists(Pasta & "AlunosTurmaID.csv") Then
                        ArquivoGerado = True
                    End If
                Exit For
            End If
        End If
    Next Arquivo

    If ArquivoGerado = False Then GoTo PROCURAR_ARQUIVO

Err_Clear:

Resume Next
End Sub

 

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...