Tag Archives: download

Selenium – How to set up automatic downloads and change the default directory

Yeah, as you might have noticed, I love Selenium and I can’t live without. Every piece of code I write needs to call Selenium… all right, that was me overreacting about it, but, you have got my point.

Download a file using Selenium is such a basic task. However, you don’t have access to where file is going to be downloaded or how to click on the confirmation box to proceed with the download. Well, Chrome allows you to change that using preferences, which in Selenium is called Capabilities or ChromeOptions. Firefox can also do it, but, Chrome has way more options for that.

This can be done using the “SetPreference” method of the WebDriver element, which is required to be done before you start the navigation, that means, before you call the Get “http://your.website.address”.

The code block below allows you to:

  1. Activate the automatic download (without confirmation)
  2. Change the default download directory to same as the workbook
Private Sub AbreEConfiguraOChrome()
    Dim driver As New Selenium.ChromeDriver
    driver.SetPreference "download.default_directory", Replace(ThisWorkbook.FullName, ThisWorkbook.name, "")
    driver.SetPreference "download.directory_upgrade", True
    driver.SetPreference "download.prompt_for_download", False
    driver.Get "http://endereco.do.seu.site"
    'aqui começa seu código
End Sub

Piece of cake, right? Ok, it took me a while to figure this out, but it’s there!

Enjoy it!

Excel – Listar arquivos em diretório num ListBox

Acho que desenterrei essa. Mas o que seria da vida sem um pouco de saudosismo? Como idade não define utilidade, aí vai mais um código que pode servir de ajudar para aquele seu aplicativo bacana em Excel VBA. A ideia é ter acesso fácil a lista de arquivos de um determinado diretório. De aí em diante, as possibilidades são inúmeras. O form não poderia ser mais simples:

For Lista Arquivos Diretório
For Lista Arquivos Diretório

O código do botão ListarArquivos:

Private Sub cmdListaArquivos_Click()
    lstArquivos.Clear
    Dim arquivos() As String
    Dim lCtr As Long
    arquivos = ListaArquivos(txtCaminho.Text)
    For lCtr = 0 To UBound(arquivos)
      lstArquivos.AddItem arquivos(lCtr)
    Next
End Sub

E por fim, o código que faz o trabalho:

Option Explicit
 
Public Function ListaArquivos(ByVal Caminho As String) As String()
 
'Atenção: Faça referência à biblioteca Micrsoft Scripting Runtime
Dim FSO As New FileSystemObject
Dim result() As String
Dim Pasta As Folder
Dim Arquivo As File
Dim Indice As Long
 
ReDim result(0) As String
If FSO.FolderExists(Caminho) Then
    Set Pasta = FSO.GetFolder(Caminho)
 
    For Each Arquivo In Pasta.Files
      Indice = IIf(result(0) = "", 0, Indice + 1)
      ReDim Preserve result(Indice) As String
      result(Indice) = Arquivo.Name
    Next
End If
 
ListaArquivos = result
ErrHandler:
    Set FSO = Nothing
    Set Pasta = Nothing
    Set Arquivo = Nothing
End Function
 
Public Sub AbreForm()
    UserForm1.Show
End Sub
 
Public Sub VerCodigo()
    Application.Goto Reference:="AbreForm"
End Sub

Pressionado o botão Listar Arquivos em uma pasta do seu computador, temos algo parecido com isso:

For Lista Arquivos Diretório Preenchido
For Lista Arquivos Diretório Preenchido

Download do arquivo:

ListaArquivosDiretorio.zip
(10.67 KiB)

Bom proveito!

VBA – Fazendo o download de um arquivo

A pergunta veio do fórum, mas decidi colocar aqui para compartilhar com todos, até porque, esse código estava perdido em algum canto do meu HD faz muito tempo.
😀

O código abaixo realiza o download de um arquivo de uma URL informada em uma pasta também informada:

Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" _
    (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, _
    ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long
 
Public Sub Download()
    On Error GoTo Err
    Dim Auxiliar As Long
    Dim URL As String, CaminhoLocal As String
    URL = "http://www.tomasvasquez.com.br/downloads/modelocadastro.zip"
    CaminhoLocal = "C:\modelocadastro.zip"
    Auxiliar = URLDownloadToFile(0, URL, CaminhoLocal, 0, 0)
    MsgBox "Download efetuado com sucesso!"
    Exit Sub
Err:
    MsgBox "Erro no download do arquivo"
End Sub

No caso, estou usando como exemplo o link do Modelo de Cadastro deste site. Basta colar o código em um novo módulo e executar, para em seguida ver que o Modelo de Cadastro é salvo no caminho “C:\modelocadastro.zip”.

Obviamente, a macro é adaptável a outras necessidades, URLs e tipos de arquivos.

Bom proveito!