Consulta MDA - Excel VBA
Enviado: 09 Ago 2017 às 23:58
Pessoal, boa noite!
Por gentileza poderiam me ajudar num código vba excel que faz consultas em lote no site do mda a partir de um código de uma planilha?
O código envolve list box para escolher a UF (state) radiobox para marcar sim ou não para contribuinte icms e text box para digitar o código do produto (produto code) clicar no botão avançar e trazer a consulta para outra planilha da mesma pasta de trabalho e de possível fazer consultas em lote e copiar os resultados da consulta para a planilha.
Até agora conseguir , a selecionar a UF, fazer com que a macro marcasse a radiobox com a opção sim para icms, preencher o código mda, porém não consigido clicar no botao avançar e fazer os demais procedimentos. Segue código :
'Inclui referência ao Microsoft Internet Controls
Sub lReferenciaIE()
Dim ObRef
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub
Sub lConsultaMDA()
'Inclui a referência se não houver
lReferenciaIE
Dim IE As InternetExplorer
Dim ICódigoMDA As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long
'Identifica a última célula ativa da lista
lUltimaLinhaAtiva = Worksheets("Coordenadas").Cells(Worksheets("Coordenadas").Rows.Count, 1).End(xlUp).Row
'Cria um objeto Internet Explorer
Set IE = New InternetExplorer
'Torna o objeto visível
IE.Visible = True
'Faz um loop por todas as linhas da planilha
For lContador = 2 To lUltimaLinhaAtiva
'Navega ao site do MDA
IE.Navigate "http://portal.mda.gov.br/portal/saf/maisalimentos/"
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Carrega os dados de cidade de origem e destino que serão preenchidos na página
lCódigoMDA = Range("D" & lContador).Value
lAddPolygo2 = Range("E" & lContador).Value
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Seleciona a UF que será preenchidos na página
IE.Document.all("state").Value = "DF" 'Estado
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Seleciona sim para ICMS
IE.Document.all("taxpayer").Item(0).Checked = True
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Carrega os dados de cidade de origem e destino na página e submente os dados do formulário
IE.Document.all("product_code").Value = lCódigoMDA
IE.Document.forms("Avançar").submit
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
'For Each i In IE.Document.body.getElementsById("CódigoMDA")
'If InStr(i.innertext, "CódigoMDA") > 0 Then
'For Each l In i.getElementsById("input")
'If InStr(l.innertext, lAddPolygon2) Then
Range("E" & lContador).Value = l.getElementsByTagName("Add Polygon 2")(1).innertext
'End If
'Next l
'End If
'Next i
Next lContador
MsgBox "Concluído!"
End Sub
Muito obrigado, desde já!
Segue também código fonte da página:
<form id="products" name="products" method="post" action="search">
<h4><span class="numero">1</span> Escolha o estado:</h4>
<p>
<select name="state" style="width:60px;">
<option value="AC">AC</option><option value="AL">AL</option><option value="AP">AP</option><option value="AM">AM</option><option value="BA">BA</option><option value="CE">CE</option><option value="DF">DF</option><option value="GO">GO</option><option value="ES">ES</option><option value="MA">MA</option><option value="MT">MT</option><option value="MS">MS</option><option value="MG">MG</option><option value="PA">PA</option><option value="PB">PB</option><option value="PR">PR</option><option value="PE">PE</option><option value="PI">PI</option><option value="RJ">RJ</option><option value="RN">RN</option><option value="RS">RS</option><option value="RO">RO</option><option value="RR">RR</option><option value="SP">SP</option><option value="SC">SC</option><option value="SE">SE</option><option value="TO">TO</option>
</select>
</p>
<h4><span class="numero">2</span> É contibuinte do ICMS?</h4>
<div id="obrigatorio_contribuicao_icms" style="width:100%; background-color: #f8f984;">
<p><strong>Para continuar selecione uma opção</strong></p>
</div>
<div class="opcoes_contribuicao_icms">
<p><input name="taxpayer" type="radio" value="t" /> Sim ou <input name="taxpayer" type="radio" value="f" /> Não</p>
<div>
<img src="/resources/theme-zen/images/mais-alimentos/img_info_laranja2.gif" alt="" class="img_info_contribuicao_icms">
<p><strong>Contribuinte do ICMS:</strong><br>Você é cadastrado na Secretaria Estadual da Fazenda como produtor rural emitente de documento fiscal. </p>
<p><strong>Não-contribuinte do ICMS:</strong><br>Você não é cadastrado na Secretaria Estadual da Fazenda como produtor rural emitente de documento fiscal.</p>
</div>
</div>
<h4><span class="numero">3</span> Selecione a categoria de produtos:</h4>
<p>
<select name="category" style="width:450px;">
<option value="A">Motocultivador</option><option value="B">Trator</option><option value="C">Equipamentos/Implementos</option><option value="D">Irrigação</option><option value="E">Aves e Suinos</option><option value="F">Apicultura</option><option value="H">Pesca e Aquicultura</option><option value="I">Equipamentos para Armazenagem e Câmaras Frigoríficas</option><option value="J">Veículos de Transporte de Carga</option><option value="K">Equipamentos para Produção Primária do Leite</option><option value="L">Equipamentos para Produção Primária do Café</option><option value="M">Projeto de Financiamento Para Pessoa Jurídica</option><option value="N">Colheitadeiras</option><option value="T">Geração de Energia Solar Fotovoltaica</option>
</select>
</p>
<p class="button"><input id="icms_submit" type="submit" value="Avançar" /></p>
</form>
<div>
<form id="product_code_form" name="search" method="post" action="product">
<h4><span class="numero">Ou</span>, se ja sabe o código de algum produto, digite na caixa abaixo:</h4>
<div>
<input name="product_code" type="text" value="" />
</div>
<p class="button"><input type="submit" value="Avançar" /></p>
</form>
</div>
</div>
Por gentileza poderiam me ajudar num código vba excel que faz consultas em lote no site do mda a partir de um código de uma planilha?
O código envolve list box para escolher a UF (state) radiobox para marcar sim ou não para contribuinte icms e text box para digitar o código do produto (produto code) clicar no botão avançar e trazer a consulta para outra planilha da mesma pasta de trabalho e de possível fazer consultas em lote e copiar os resultados da consulta para a planilha.
Até agora conseguir , a selecionar a UF, fazer com que a macro marcasse a radiobox com a opção sim para icms, preencher o código mda, porém não consigido clicar no botao avançar e fazer os demais procedimentos. Segue código :
'Inclui referência ao Microsoft Internet Controls
Sub lReferenciaIE()
Dim ObRef
On Error Resume Next
ThisWorkbook.VBProject.References.AddFromGuid "{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}", 1, 1
End Sub
Sub lConsultaMDA()
'Inclui a referência se não houver
lReferenciaIE
Dim IE As InternetExplorer
Dim ICódigoMDA As String
Dim lUltimaLinhaAtiva As Long
Dim lContador As Long
'Identifica a última célula ativa da lista
lUltimaLinhaAtiva = Worksheets("Coordenadas").Cells(Worksheets("Coordenadas").Rows.Count, 1).End(xlUp).Row
'Cria um objeto Internet Explorer
Set IE = New InternetExplorer
'Torna o objeto visível
IE.Visible = True
'Faz um loop por todas as linhas da planilha
For lContador = 2 To lUltimaLinhaAtiva
'Navega ao site do MDA
IE.Navigate "http://portal.mda.gov.br/portal/saf/maisalimentos/"
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Carrega os dados de cidade de origem e destino que serão preenchidos na página
lCódigoMDA = Range("D" & lContador).Value
lAddPolygo2 = Range("E" & lContador).Value
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Seleciona a UF que será preenchidos na página
IE.Document.all("state").Value = "DF" 'Estado
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Seleciona sim para ICMS
IE.Document.all("taxpayer").Item(0).Checked = True
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
sng = Timer
Do While sng + 3 > Timer
Loop
'Carrega os dados de cidade de origem e destino na página e submente os dados do formulário
IE.Document.all("product_code").Value = lCódigoMDA
IE.Document.forms("Avançar").submit
'Identifica se a página já foi totalmente carregada
While IE.ReadyState <> READYSTATE_COMPLETE
Wend
'For Each i In IE.Document.body.getElementsById("CódigoMDA")
'If InStr(i.innertext, "CódigoMDA") > 0 Then
'For Each l In i.getElementsById("input")
'If InStr(l.innertext, lAddPolygon2) Then
Range("E" & lContador).Value = l.getElementsByTagName("Add Polygon 2")(1).innertext
'End If
'Next l
'End If
'Next i
Next lContador
MsgBox "Concluído!"
End Sub
Muito obrigado, desde já!
Segue também código fonte da página:
<form id="products" name="products" method="post" action="search">
<h4><span class="numero">1</span> Escolha o estado:</h4>
<p>
<select name="state" style="width:60px;">
<option value="AC">AC</option><option value="AL">AL</option><option value="AP">AP</option><option value="AM">AM</option><option value="BA">BA</option><option value="CE">CE</option><option value="DF">DF</option><option value="GO">GO</option><option value="ES">ES</option><option value="MA">MA</option><option value="MT">MT</option><option value="MS">MS</option><option value="MG">MG</option><option value="PA">PA</option><option value="PB">PB</option><option value="PR">PR</option><option value="PE">PE</option><option value="PI">PI</option><option value="RJ">RJ</option><option value="RN">RN</option><option value="RS">RS</option><option value="RO">RO</option><option value="RR">RR</option><option value="SP">SP</option><option value="SC">SC</option><option value="SE">SE</option><option value="TO">TO</option>
</select>
</p>
<h4><span class="numero">2</span> É contibuinte do ICMS?</h4>
<div id="obrigatorio_contribuicao_icms" style="width:100%; background-color: #f8f984;">
<p><strong>Para continuar selecione uma opção</strong></p>
</div>
<div class="opcoes_contribuicao_icms">
<p><input name="taxpayer" type="radio" value="t" /> Sim ou <input name="taxpayer" type="radio" value="f" /> Não</p>
<div>
<img src="/resources/theme-zen/images/mais-alimentos/img_info_laranja2.gif" alt="" class="img_info_contribuicao_icms">
<p><strong>Contribuinte do ICMS:</strong><br>Você é cadastrado na Secretaria Estadual da Fazenda como produtor rural emitente de documento fiscal. </p>
<p><strong>Não-contribuinte do ICMS:</strong><br>Você não é cadastrado na Secretaria Estadual da Fazenda como produtor rural emitente de documento fiscal.</p>
</div>
</div>
<h4><span class="numero">3</span> Selecione a categoria de produtos:</h4>
<p>
<select name="category" style="width:450px;">
<option value="A">Motocultivador</option><option value="B">Trator</option><option value="C">Equipamentos/Implementos</option><option value="D">Irrigação</option><option value="E">Aves e Suinos</option><option value="F">Apicultura</option><option value="H">Pesca e Aquicultura</option><option value="I">Equipamentos para Armazenagem e Câmaras Frigoríficas</option><option value="J">Veículos de Transporte de Carga</option><option value="K">Equipamentos para Produção Primária do Leite</option><option value="L">Equipamentos para Produção Primária do Café</option><option value="M">Projeto de Financiamento Para Pessoa Jurídica</option><option value="N">Colheitadeiras</option><option value="T">Geração de Energia Solar Fotovoltaica</option>
</select>
</p>
<p class="button"><input id="icms_submit" type="submit" value="Avançar" /></p>
</form>
<div>
<form id="product_code_form" name="search" method="post" action="product">
<h4><span class="numero">Ou</span>, se ja sabe o código de algum produto, digite na caixa abaixo:</h4>
<div>
<input name="product_code" type="text" value="" />
</div>
<p class="button"><input type="submit" value="Avançar" /></p>
</form>
</div>
</div>