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に取り込むことができます。以下の手順で進めます。
- Excelを開き、「データ」タブから「Webから」を選択。
- ヤフーファイナンスの株価ページのURLを入力し、Power Queryでデータを取り込みます。
- 必要なデータを選択し、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で株価データを取得できるようになります。

コメント