Vídeo recomendado
https://youtu.be/diWPPPhW-9E
https://youtu.be/diWPPPhW-9E
Manipular a janela de download
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qua Jul 27, 2016 5:14 pm
Manipular a janela de download
Pessoal, fiz uma macro que faz uma busca em um site, monta um relatorio, e exporto para um arquivo CSV.
Tudo isso ja fiz, e funcionou perfeitamente, o problema é que no momento da exportação, o navegador abre a janela para salvar e/ou abrir o arquivo. O que preciso é dar um "salvar como..." e colocar em uma determinada pasta.
Vi que é um processo mais complexo, pois precisa trabalhar com as API´s para manipular a janela, alguém poderia me dar uma ajuda de como proceder?
Abraços
Tudo isso ja fiz, e funcionou perfeitamente, o problema é que no momento da exportação, o navegador abre a janela para salvar e/ou abrir o arquivo. O que preciso é dar um "salvar como..." e colocar em uma determinada pasta.
Vi que é um processo mais complexo, pois precisa trabalhar com as API´s para manipular a janela, alguém poderia me dar uma ajuda de como proceder?
Abraços
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Manipular a janela de download
Fabiano, boa noite e seja muito bem vindo ao fórum.
Pelo que vi de sua dúvida, uma das formas mais simples de se conseguir realizar esse download, seria utilizando o modelo/proposta do link abaixo:
- VBA – FAZENDO O DOWNLOAD DE UM ARQUIVO
Veja se consegue compreender e adaptar o código. Caso tenha alguma dúvida, envie mais detalhes sobre seu modelo, para que possamos tentar ajudá-lo.
Forte abraço.
Pelo que vi de sua dúvida, uma das formas mais simples de se conseguir realizar esse download, seria utilizando o modelo/proposta do link abaixo:
- VBA – FAZENDO O DOWNLOAD DE UM ARQUIVO
Veja se consegue compreender e adaptar o código. Caso tenha alguma dúvida, envie mais detalhes sobre seu modelo, para que possamos tentar ajudá-lo.
Forte abraço.
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qua Jul 27, 2016 5:14 pm
Re: Manipular a janela de download
Olá Mikel, obrigado pela resposta.
Então, eu já havia tentado utilizar esse método, mas neste caso ele tá baixando o código html da página, e não o arquivo em si.
O grande problema no meu caso, é que a página web a partir de certos filtros, gera o arquivo a ser baixado, e não é um link direto pro arquivo. Por isso que esse script que você mencionou não está funcionando.
Fiz todo o processo de "navegar" na página, ai fique no último passo que era salvar arquivo rs rs...
Então, eu já havia tentado utilizar esse método, mas neste caso ele tá baixando o código html da página, e não o arquivo em si.
O grande problema no meu caso, é que a página web a partir de certos filtros, gera o arquivo a ser baixado, e não é um link direto pro arquivo. Por isso que esse script que você mencionou não está funcionando.
Fiz todo o processo de "navegar" na página, ai fique no último passo que era salvar arquivo rs rs...
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Manipular a janela de download
Fabiano, bom dia.
Entendi sua situação, até cheguei a suspeitar, mas não tinha certeza pelo fato de você não ter disponibilizado um modelo para teste.
Nesse caso, se ele chega a abri uma janela para download, talvez a solução abaixo lhe atenda:
- Interação VBA com Internet Explorer - Janela Download
Dê uma olhada na solução dada neste tópico e veja se pode vir a lhe ajudar.
Caso não dê certo, continuamos a buscar uma solução.
Abraços.
Entendi sua situação, até cheguei a suspeitar, mas não tinha certeza pelo fato de você não ter disponibilizado um modelo para teste.
Nesse caso, se ele chega a abri uma janela para download, talvez a solução abaixo lhe atenda:
- Interação VBA com Internet Explorer - Janela Download
Dê uma olhada na solução dada neste tópico e veja se pode vir a lhe ajudar.
Caso não dê certo, continuamos a buscar uma solução.
Abraços.
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qua Jul 27, 2016 5:14 pm
Re: Manipular a janela de download
Olá Mikel, também testei essa solução, o problema que as versões novas do Internet Explorer, não abrem mais uma "janela" a parte, e sim ela está dentro do navegador, portanto não uma identificação pela janela, para que esse script possa funcionar.
Já rodei tudo e não encontrei nada parecido. Então vou partir pro plano B
Neste meu script, antes de tentar gerar o arquivo, a tabela que preciso ela é exibida no navegador, minha idéia então e tentar identificá-la dentro do código html, e de alguma maneira copiá-la para a planilha.
Abaixo:
download/file.php?mode=view&id=3399
Ja identifiquei também o nome da tabela no código html, agora nao sei como "copiar" pra dentro da planilha.
Alguma idéia?
Abraços!
Já rodei tudo e não encontrei nada parecido. Então vou partir pro plano B
Neste meu script, antes de tentar gerar o arquivo, a tabela que preciso ela é exibida no navegador, minha idéia então e tentar identificá-la dentro do código html, e de alguma maneira copiá-la para a planilha.
Abaixo:
download/file.php?mode=view&id=3399
Ja identifiquei também o nome da tabela no código html, agora nao sei como "copiar" pra dentro da planilha.
Alguma idéia?
Abraços!
- Anexos
-
- relatorio.jpg (159.38 KiB) Exibido 10837 vezes
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Manipular a janela de download
Fabiano, boa tarde.
Cara, realmente o lance do download ficou complicado. Além disso, o IE também não tem acompanhado, de forma satisfatória, a evolução dos recursos da web.
Porém, se você tem a condição de baixar a informação diretamente da tabela, conforme imagem, dê uma olhada nessa apostila sobre integração de VBA + IE. Com certeza você irá encontrar informações que irão te ajudar nessa tarefa.
- Interação VBA com Internet Explorer - Apostila
Tentei localizar algum comando que fizesse a captura dos campos de uma tabela, mas no momento me recordo de um modelo apenas, mas o mesmo não utiliza o Microsoft Internet Control para realizar interação, mas sim o Selenium VBA. Por falar nele, te indicaria como ferramenta para realização dos procedimentos de interação entre VBA x WEB. Seguem alguns links abaixo:
- Modelo Captura Tabela: [MODELO] Consulta CEP Correios usando Selenium VBA;
- Links falando sobre Selenium VBA:
-- Fórum: viewtopic.php?f=23&t=4161
-- Blog: http://www.tomasvasquez.com.br/blog/mic ... -webdriver
-- YouTube: https://www.youtube.com/watch?v=hk-65p2 ... e=youtu.be
Dúvidas, estamos a disposição.
Abraços e excelente semana.
Cara, realmente o lance do download ficou complicado. Além disso, o IE também não tem acompanhado, de forma satisfatória, a evolução dos recursos da web.
Porém, se você tem a condição de baixar a informação diretamente da tabela, conforme imagem, dê uma olhada nessa apostila sobre integração de VBA + IE. Com certeza você irá encontrar informações que irão te ajudar nessa tarefa.
- Interação VBA com Internet Explorer - Apostila
Tentei localizar algum comando que fizesse a captura dos campos de uma tabela, mas no momento me recordo de um modelo apenas, mas o mesmo não utiliza o Microsoft Internet Control para realizar interação, mas sim o Selenium VBA. Por falar nele, te indicaria como ferramenta para realização dos procedimentos de interação entre VBA x WEB. Seguem alguns links abaixo:
- Modelo Captura Tabela: [MODELO] Consulta CEP Correios usando Selenium VBA;
- Links falando sobre Selenium VBA:
-- Fórum: viewtopic.php?f=23&t=4161
-- Blog: http://www.tomasvasquez.com.br/blog/mic ... -webdriver
-- YouTube: https://www.youtube.com/watch?v=hk-65p2 ... e=youtu.be
Dúvidas, estamos a disposição.
Abraços e excelente semana.
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qua Jul 27, 2016 5:14 pm
Re: Manipular a janela de download
Olá Mikel,
Vou dar uma vasculhada sim nessa apostila pra saber se encontro o que preciso.Obrigado pela ajuda
Quanto ao Selenium, comecei a mexer na solução, mas não sei o que acontece que ele dá um erro muito estranho.
"Unable to bind to locking port 9054 within 45000 ms"
o código que o selenium ide gerou foi o seguinte:
Dim selenium
Set selenium = CreateObject("SeleniumWrapper.WebDriver")
selenium.Start "firefox", "http://aplicacoes2.portobello.com.br:8080/"
selenium.Open "/ords/prd/f?p=107:LOGIN_DESKTOP:13264655292245:::::"
selenium.Type "id=P101_USERNAME", "xxxx"
selenium.Type "id=P101_PASSWORD", "xxx"
selenium.clickAndWait "id=B30248543147160805"
selenium.clickAndWait "link=Histórico de Pedido"
selenium.Type "id=P15_DAT_INIC", "01/01/2016"
selenium.Type "id=P15_DAT_FIM", "31/12/2050"
selenium.Select "id=R31588350623805231_row_select", "label=Tudo"
selenium.Click "xpath=(//button[@type='button'])[8]"
selenium.Click "xpath=(//button[@type='button'])[8]"
selenium.Click "xpath=(//button[@type='button'])[7]"
selenium.stop
Vou dar uma vasculhada sim nessa apostila pra saber se encontro o que preciso.Obrigado pela ajuda
Quanto ao Selenium, comecei a mexer na solução, mas não sei o que acontece que ele dá um erro muito estranho.
"Unable to bind to locking port 9054 within 45000 ms"
o código que o selenium ide gerou foi o seguinte:
Dim selenium
Set selenium = CreateObject("SeleniumWrapper.WebDriver")
selenium.Start "firefox", "http://aplicacoes2.portobello.com.br:8080/"
selenium.Open "/ords/prd/f?p=107:LOGIN_DESKTOP:13264655292245:::::"
selenium.Type "id=P101_USERNAME", "xxxx"
selenium.Type "id=P101_PASSWORD", "xxx"
selenium.clickAndWait "id=B30248543147160805"
selenium.clickAndWait "link=Histórico de Pedido"
selenium.Type "id=P15_DAT_INIC", "01/01/2016"
selenium.Type "id=P15_DAT_FIM", "31/12/2050"
selenium.Select "id=R31588350623805231_row_select", "label=Tudo"
selenium.Click "xpath=(//button[@type='button'])[8]"
selenium.Click "xpath=(//button[@type='button'])[8]"
selenium.Click "xpath=(//button[@type='button'])[7]"
selenium.stop
Editado pela última vez por fabianoheringer em Sex Jul 29, 2016 9:30 am, em um total de 1 vez.
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Manipular a janela de download
Fabiano, boa noite.
Esse erro tem ocorrido já a algum tempo. O que ocorre é uma incompatibilidade das últimas versões do Firefox e SeleniumVBA.
Para corrigir esse erro, faça a alteração na linha abaixo:
Dessa forma, a rotina deverá funcionar perfeitamente.
Ps.: Enviei uma MP pra ti. Tente lê-la urgentemente.
Abraços e bom descanso.
Esse erro tem ocorrido já a algum tempo. O que ocorre é uma incompatibilidade das últimas versões do Firefox e SeleniumVBA.
Para corrigir esse erro, faça a alteração na linha abaixo:
Código: Selecionar todos
selenium.Start "chrome", "http://aplicacoes2.portobello.com.br:8080/"
Ps.: Enviei uma MP pra ti. Tente lê-la urgentemente.
Abraços e bom descanso.
-
- Acabou de chegar
- Mensagens: 6
- Registrado em: Qua Jul 27, 2016 5:14 pm
Re: Manipular a janela de download
Olá Mike, obrigado pela MP...
Então, parei no seguinte, com aquela apostila que voce me indicou, consegui copiar a tabela para a planilha do excel, ficou excelente.
Mas surgiu um outro imprevisto, se você reparar no relatorio, existe a lista para escolher quantas linhas mostrar por pagina, até ai tudo bem, consegui fazer com que selecionasse "Tudo". O problema que nesse relatório, nao existe um botao do tipo "Buscar" ou "Atualizar", quando eu clico na quantidade de linhas "Tudo" ele já atualiza. Quando faço isso via o código, ele só seleciona o tudo, mas não atualiza a tabela com todas as linhas.
Existe esse botão de "Ir" que aparece na imagem, mas quando faço o comando para selecionar o "Tudo", e clico em Ir, ele volta pro padrão que são "50" linhas.
Pensei em logo selecionar as linhas, enviar um comando de TAB pra ele atualizar...é possível fazer isso ?
Então, parei no seguinte, com aquela apostila que voce me indicou, consegui copiar a tabela para a planilha do excel, ficou excelente.
Mas surgiu um outro imprevisto, se você reparar no relatorio, existe a lista para escolher quantas linhas mostrar por pagina, até ai tudo bem, consegui fazer com que selecionasse "Tudo". O problema que nesse relatório, nao existe um botao do tipo "Buscar" ou "Atualizar", quando eu clico na quantidade de linhas "Tudo" ele já atualiza. Quando faço isso via o código, ele só seleciona o tudo, mas não atualiza a tabela com todas as linhas.
Existe esse botão de "Ir" que aparece na imagem, mas quando faço o comando para selecionar o "Tudo", e clico em Ir, ele volta pro padrão que são "50" linhas.
Pensei em logo selecionar as linhas, enviar um comando de TAB pra ele atualizar...é possível fazer isso ?
- Mikel Silveira Fraga
- Jedi
- Mensagens: 1173
- Registrado em: Sex Mai 27, 2011 3:27 pm
- Localização: Governador Valadares - MG
- Contato:
Re: Manipular a janela de download
Fabiano, bom dia.
Sobre a MP, sem problema. Percebi o que você tinha feito, o que te deixou exposto. Espero que eu tenha sido o único a perceber isso.
Sobre a sua dúvida, provavelmente essa seleção esta vinculada a um Evento onChance do JavaScript, de forma que de acordo com a alteração, ele já deveria realizar o procedimento de correção.
Não vou me lembrar agora, mas caso esse evento exista, procure um comando no WebDriver do Selenium, para execução do Script. Se não me engano, esse comando é algo parecido com execScript. Dê uma olhada nas opções da lista de métodos e propriedades (IntelliSense) do WebDriver do Selenium.
Fico no aguardo do retorno.
Abraços e excelente final de semana.
Sobre a MP, sem problema. Percebi o que você tinha feito, o que te deixou exposto. Espero que eu tenha sido o único a perceber isso.
Sobre a sua dúvida, provavelmente essa seleção esta vinculada a um Evento onChance do JavaScript, de forma que de acordo com a alteração, ele já deveria realizar o procedimento de correção.
Não vou me lembrar agora, mas caso esse evento exista, procure um comando no WebDriver do Selenium, para execução do Script. Se não me engano, esse comando é algo parecido com execScript. Dê uma olhada nas opções da lista de métodos e propriedades (IntelliSense) do WebDriver do Selenium.
Fico no aguardo do retorno.
Abraços e excelente final de semana.