ExcelのVisual Basicで株価の時系列データを取得する方法とヤフーファイナンスの最新API活用法

Excel

ExcelのVisual Basicを使って株価の時系列データを取得していたが、最近取得できなくなったという問題に直面している場合、その原因として古いAPIや非推奨の手法が考えられます。特に、ヤフーファイナンスからデータを取っていた場合、ヤフーファイナンスが提供するAPIが変更された可能性があります。この記事では、Excelで最新の株価データを取得するための解決方法を解説します。

ヤフーファイナンスのデータ取得方法の変化

ヤフーファイナンスは以前、無料で株価のデータを取得できるAPIを提供していましたが、これが更新されなくなり、利用できなくなった場合があります。これにより、Visual Basicを使った自動データ取得ができなくなった可能性があります。しかし、現在でもヤフーファイナンスからデータを取得する方法はあります。

特に、旧APIが無効化された場合には、Webクエリや新しいAPIの利用を検討することが重要です。公式なAPIは提供されていないものの、代替手段としてHTTPリクエストを利用してデータを取得する方法があります。

Excelでヤフーファイナンスから株価データを取得する方法

ヤフーファイナンスから株価データをExcelに自動で取り込む方法は、WebスクレイピングやAPIを利用する方法があります。Webスクレイピングを使うと、ヤフーファイナンスのウェブページから直接データを取得できますが、注意が必要です。これは公式APIではないため、ウェブページの変更がデータ取得に影響を与える可能性があります。

もう一つの方法は、Excelの「Power Query」機能を使って、ヤフーファイナンスのデータを取得する方法です。これを使うことで、Webページのテーブルデータを直接Excelに取り込むことができます。以下の手順で進めます。

  1. Excelを開き、「データ」タブから「Webから」を選択。
  2. ヤフーファイナンスの株価ページのURLを入力し、Power Queryでデータを取り込みます。
  3. 必要なデータを選択し、Excelシートに表示させます。

VBAを使った株価データの取得方法

VBA(Visual Basic for Applications)を使用して株価データを自動的に取得する場合、ヤフーファイナンスのURLを直接VBAコードで取得し、データを解析する方法があります。これにより、株価の時系列データを定期的に更新できます。以下は基本的なVBAコードの例です。

Sub GetStockData()
    Dim url As String
    Dim http As Object
    Dim html As Object
    Dim stockData As String

    url = "https://finance.yahoo.com/quote/GOOG/history"
    Set http = CreateObject("MSXML2.XMLHTTP")
    http.Open "GET", url, False
    http.Send

    Set html = CreateObject("htmlfile")
    html.body.innerHTML = http.responseText

    'ここでデータ解析の処理を追加
    stockData = html.body.getElementsByTagName("table")(0).innerText

    '取得したデータをシートに書き込む処理
    Sheets(1).Range("A1").Value = stockData
End Sub

このコードを使うことで、指定した株価ページからデータを自動的に取得し、Excelシートに表示することができます。必要に応じて、このコードをカスタマイズして、異なる株のデータを取得することも可能です。

まとめ

Excelで株価データを取得する方法は、ヤフーファイナンスのデータを取得するためのAPIの変更に伴い、WebクエリやVBAコードを使用する方法に切り替えることが有効です。また、Power Queryを利用することで、Webページから直接データを取り込むことができるため、簡単にデータの自動更新を実現できます。これらの方法を試すことで、再びExcelで株価データを取得できるようになります。

コメント

タイトルとURLをコピーしました