Como faço para baixar um preço das ações no Excel 2013? Existe um equivalente à função de planilha do Google Doc GoogleFinance?

8

Em uma planilha do Google Docs, posso usar esta fórmula de célula:

=GoogleFinance("GOOG", "price")

para baixar o preço mais recente de uma ação. Existe uma função equivalente no Excel 2013?

As versões anteriores do Excel tinham um recurso de marca inteligente que fazia o download de uma tonelada de dados para cada ticker (na verdade, muitos, se você só precisa do preço), e eu vi fontes que sugerem o aplicativo Bing Finance para Excel 2013. Infelizmente isso foi descontinuado.

Existe uma maneira simples de fazer isso? Eu literalmente só preciso do preço mais recente, e não me importo se for atrasado, vem do Yahoo Finance, etc. Presumivelmente, eu poderia escrever um código VBA para baixar um arquivo CSV do YF, analisá-lo e assim por diante, mas estou na esperança de evitar a criação de uma pasta de trabalho habilitada para macro.

Michael A
fonte
Esta não é uma característica que Excel suporta fora da caixa
Ramhound
1
Nos trabalhos do Excel 2007/2010 data - existing connection - MSN MoneyCentral Investory Stock Quotes, isso foi removido para 2013? editar - sim, parece que ele foi removido e o Bing Finance App é o "substituto". Você pode configurar uma data - from webconsulta para msn money, mas isso seria tedioso.
Raystafarian
@Raystafarian Como configurar uma nova consulta de dados?
Michael A
Parece que você pode precisar usar consulta poder em 2013 fonte
Raystafarian
1
@harrymc Eu não sou o OP, mas acho que a resposta mais valiosa seria algo que usa a funcionalidade existente no Excel 2013 e / ou é gratuito.
Excellll

Respostas:

5

Você pode usar um UDF como este -

Option Explicit

Public Function GetTickerPrice(ByVal ticker As String) As Double

    Dim IE As Object
    Dim pageData As Object

    Set IE = CreateObject("InternetExplorer.Application")
    Dim URL As String
    URL = "http://www.msn.com/en-us/money/stockdetails/fi-126.1." & ticker & ".NAS?symbol=" & ticker & "=PRFIMQ"

    IE.Navigate URL

     Do Until IE.ReadyState >= 4
            DoEvents
     Loop

     Application.Wait Now + TimeSerial(0, 0, 5)

     Set pageData = IE.document

     GetTickerPrice = pageData.getElementsByClassName("precurrentvalue")(0).innertext

     Set IE = Nothing
     Set pageData = Nothing
End Function

Agora você pode usar GetTickerPrice("GOOG")e obter o preço atual.


Eu levei isso para o Codereview.SE para alguma entrada.

Raystafarian
fonte
2
Não seria melhor formatar como Duplo em vez de Longo, para não perder as informações decimais? Em seguida, o usuário final pode decidir se deseja arredondá-lo.
Jonno 27/02
Obrigado, isso funciona! Mas é realmente lento - cerca de 20 segundos para obter um preço das ações. Estou assumindo a abertura do IE e carregando a URL, existem os gargalos. Existe alguma maneira de contornar isso?
Excellll
@Jonno sim, eu vejo Excellll fez a alteração
Raystafarian
@Excellll Vou tentar ver se há uma maneira de contornar isso, talvez forçando o IE a ficar em silêncio, mas, a menos que possamos encontrar um banco de dados como costumava ser, podemos ficar presos (pelo menos para versões mais antigas do excel).
Raystafarian
1
@Excellll Há uma resposta bastante decente no CodeReview à minha abordagem. Parece que é diferente o suficiente para que não seja considerado o mesmo que a minha resposta.
Raystafarian
-1

Existe um suplemento chamado Add-In de cotação de ações do Excel 2013 que faz isso e tem uma versão para 2013. Pessoalmente, não consegui fazê-lo funcionar, mas ele já existe há alguns anos, então provavelmente era apenas eu .

Jeremy Shaw
fonte
2
Bem-vindo ao superusuário. Isso ajuda a responder à pergunta, mas você poderia adicionar informações sobre como esse plugin deve ser usado?
LJD200 29/02