Excel + Mecanismo de pesquisa?

0

Existe alguma maneira de um programa de planilha eletrônica (como o Excel) se comunicar com um mecanismo de pesquisa (como o Google ou o WolframAlpha?)

O método perfeito seria uma macro do Excel que poderia pedir para alimentar o mecanismo de busca e retornar resultados. Simplesmente o número de acessos seria suficiente.

O segundo melhor seria um mecanismo de pesquisa que pudesse importar arquivos do tipo .csv e salvar resultados.

Alguém sabe de tal produto?

    
por Helge 19.06.2010 / 18:02

2 respostas

2

Sim. É possível. Eu automatizei com sucesso o Internet Explorer no Excel para obter tempo de aviação na folha de excel. Pesquise no Google para automatizar o Internet Explorer e você desejará que o innertext volte com o que você está procurando. Este é um trecho desse código para obter o clima da aviação e a elevação do campo para um determinado aeroporto. O código está escrito em VBA. Você pode carregar um arquivo CSV no Excel e, em seguida, percorrer os registros que executam a macro para os resultados.

On Error GoTo errHandler
Dim adPost() As Byte, strPage As String
Set ie = CreateObject("InternetExplorer.Application")
'ie.Visible = True

adPost = StrConv("station_ids=" & strAirport & "&std_trans=1, ", vbFromUnicode)

ie.navigate "http://aviationweather.gov/adds/metars/index.php", , , adPost, _
  "Content-Type: application/x-www-form-urlencoded" & vbCrLf

Do While ie.busy: DoEvents: Loop
Do While ie.ReadyState <> 4: DoEvents: Loop

Dim strText As String, strElevation As String, strAPName As String, strAirportInfo As String

strText = ie.document.body.innertext

Debug.Print strText
strText = Right(strText, Len(strText) - InStr(1, strText, strAirport) + 1)

ie.navigate "http://www.airnav.com/airport/" & strAirport
Do While ie.busy: DoEvents: Loop
Do While ie.ReadyState <> 4: DoEvents: Loop
ie.Visible = True

strAirportInfo = ie.document.body.innertext
strElevation = Left(strAirportInfo, 500)
strAPName = Left(strElevation, 150)
If InStr(1, strElevation, "Elevation") > 0 Then
  strElevation = Right(strElevation, Len(strElevation) - InStr(1, strElevation, "Elevation") + 1)
  strElevation = Left(strElevation, InStr(1, strElevation, "."))
  strElevation = Left(strElevation, InStr(1, strElevation, " ft.") - 1)
  strElevation = Right(strElevation, Len(strElevation) - InStr(1, strElevation, " "))
Else
  strElevation = ""
End If

Debug.Print strAPName
If InStr(1, strAPName, strAirport) > 0 Then
  strAPName = Right(strAPName, Len(strAPName) - InStr(1, strAPName, strAirport) - 3)
  strAPName = Left(strAPName, InStr(1, strAPName, "GOING TO") - 1)
  strAPName = Trim(Replace(strAPName, vbCrLf, " "))
Else
  strAPName = strAirport
End If
    
por 19.06.2010 / 18:20
0

Eles têm algo extremamente próximo e permite exportar: link

Se isso não é exatamente o que você está procurando, então a solução do wbeard, embora exija codificação, é uma resposta muito boa

    
por 20.06.2010 / 06:01