ゼロからの週末プログラマー

週末にプログラミングを楽しみながら稼げるのか試してみます!

この投稿は1年以上前に公開されました。
現在では状況や内容が変わっている可能性があります。
ご注意下さい。

マイクロソフトACCESSのデータベースを作成する

      2014/08/21

今週実施した項目

  • データベースの新規作成
  • ウェブサイトのソース取得プログラムの追加
  • ヤフーファイナンスの株価情報ソース取得プログラムの追加

はじめに

はじめまして。本ウェブサイト管理人の杉山です。

今週末から、ゼロからの週末プログラマーを始めたいと思います。

前回のブログでも書きましたが、本サイトは

週末にプログラミングを楽しみながら、ゼロから稼ぐ

事を目的としています。

そのために、以下の3つの事に挑戦します。

  • データベースを使った株価データの分析
  • iPhoneアプリを作る
  • Androidアプリを作る

どんな順番でどのようにやるかは、週末の気分次第。

道筋が見えているわけではなく、挑戦と失敗の繰り返しになってしまうはず。

それでも誰かの参考になればと思い、できる限り、その過程を公開するつもりです。

では、まずはデータベースを使った株価データの分析から始めます。

マイクロソフトACCESSについて

利用するソフトウェアはマイクロソフトのACCESSというデータベースソフトウェア。

現時点での最新バージョンは2013で、カカクコムなどで調べると、だいたい1万2千円~1万3千円ぐらいで購入できるみたい。

マイクロソフトの公式サイトだと1万6千円ぐらいでした。

ダウンロード版が基本のようで、60日間の無料試用期間があるので、とりあえず使ってみることができます。

私が使っているバージョンは2007。

かなり古いバージョンですが、マイクロソフトACCESSのデータベースとしての基本的な機能は、すでにバージョン2000の段階で完成しています。

パソコン1台で株価データを分析するぐらいの事であれば、最新バージョンでなくても、何も問題はありません。

データベースの新規作成

まずは「空のデータベース」を新規に作成します。

ファイル名もフォルダ名も任意です。

「C:\KABUZERO\KABUZERO.accdb」というファイルを作成しました。

利用するもの、しないもの

マイクロソフトACCESSデータベースには、色々なオブジェクトを作ることができますが、全ての種類を使うわけではありません。

テーブル

データを格納する入れ物。

必ず使います。

クエリー

データを分析するためのもの。

条件を指定して抽出したり、並び替えたり、一括更新したりできます。

これも使います。

フォーム

画面表示用。

使いません。

レポート

印刷用。

使いません。

マクロ

処理の自動化。

使いません。

モジュール=VBA(Visual Basic for Applications)

処理の自動化。

使います。

個別銘柄の基本情報

まずは個別銘柄の基本的な情報を取得することを考えます。

基本的な情報とは以下のような項目です。

  • 銘柄コード
  • 市場
  • 名称
  • 時価総額
  • 発行済株式数
  • 予想配当利回り
  • 予想1株配当
  • 予想PER
  • 実績PBR
  • 単元株数
  • 自己資本比率
  • 株主優待の権利確定日
  • 株主優待の必要株数
  • 株主優待の内容
  • URL

項目は将来的に増減しますが、これらの項目があれば、条件を指定して投資対象銘柄を絞り込むことができます。

これらの項目をインターネット上のウェブサイトから自動収集してデータベース化することを目指します。

株価情報の収集先となるウェブサイト

情報を収集するために接続するウェブサイトは、できる限り有名で多くの人が閲覧しているウェブサイトが良いでしょう。

ウェブサイトの稼働率や情報の信頼性が高いからです。

最も有名なのは「ヤフーファイナンス

いろんな情報が提供されているので活用したい所です。

みんなの株式」、「株マップ.com」、「株テク」、「トレイダーズウェブ」というウェブサイトでも、様々な株価情報を見ることができます。

あと、大手ネット証券会社のウェブサイトも情報が充実しています。

ただし、ほとんどの証券会社は、口座を開設して、IDとパスワードを入力しないと詳細な情報を見ることはできません。

しかし、楽天証券は口座を持っていなくても、詳細な情報を見ることができます。

楽天証券は旧インフォシークマネーからの流れがあるからだと思いますが、素晴らしい対応ですね。

まずはヤフーファイナンスに接続して基本情報をデータベース化します。

インターネットに接続してHTMLソースを取得

弊社のウェブサイトに過去に掲載した文書を参考にして、VBAプログラムを作成します。

その前に、マイクロソフトACCESSのオプションからセキュリティーセンターを開いて、信頼できる場所を設定しておきます。

(バージョン2007の場合です)

これでVBAプログラムが実行できるようになります。

まずは「標準モジュール」を作成。

データベースを閉じるときに名前を付けることになりますが、任意の名前を付けて下さい。

参照設定ではADOではなく、DAOを使えるようにします。

何もしなければDAOが使えるはず。

パソコン単体でデータベースを使う場合、ADOよりもDAOの方が早いので。

以下のようなプログラムを作りました。

Function GetHttpDoc(URL As String) As String

    Dim Stream As Object
    Dim Http As Object

On Error GoTo GetHttpDoc_ERR

    Set Http = CreateObject("MSXML2.XMLHTTP")
    Http.Open "GET", URL, False
    Http.Send

    If Http.Status >= 200 And Http.Status < 300 Then
        Set Stream = CreateObject("ADODB.Stream")
        Stream.Open
        Stream.Type = 2 'テキスト
        Stream.Charset = "Shift_JIS"
        Stream.WriteText Http.responseText
        Stream.Position = 0
        GetHttpDoc = Stream.readText(-1)
    Else
        GetHttpDoc = ""
    End If

GetHttpDoc_RESUME:

On Error GoTo 0

    Exit Function

GetHttpDoc_ERR:

    Resume GetHttpDoc_RESUME

End Function

試験的に、イミディエイトウィンドウから以下の命令を実行。

?GetHttpDoc("http://www.sysana.com/")

あれ?

何も出力されない。

なんでだろうと思ったら、弊社のウェブサイトをワードプレスに移行したので、「www.sysana.com」は自動的に「sysana.com」にリダイレクトされます。

リダイレクトされるようなURLを指定すると、エラーになるようです。

こうしたら、問題なく実行されました。

?GetHttpDoc("http://sysana.com/")

イミディエイトウィンドウにhtmlソースがずらずらと表示されます。

まずはヤフーファイナンスに接続してみる

ヤフーファイナンスをブラウザで開いて、何か証券コードを入力して株価を検索してみます。

ちゃんと存在する証券コードであれば、画面にはその企業の株価や詳細な情報が表示されるはずです。

ブラウザのURLが表示されている欄は以下のようになります。

http://stocks.finance.yahoo.co.jp/stocks/detail/?code=銘柄コード.市場コード

市場コードはアルファベット1文字。

東証なら「T」、名証なら「N」、札証なら「S」、福証なら「F」

でも、市場コードを削除して再読み込みしても同じ画面が表示されるので、市場コードは指定しなくても問題ないようです。

複数の市場に上場している企業の場合、それぞれの株価を取得するのに使い分けるようですが、何も指定しなければ主要市場の株価情報が表示されます。

また、銘柄コードの部分を存在しないコードに変更して再読み込みすると、「一致する銘柄は見つかりませんでした」という画面が表示されます。

そこで、ヤフーファイナンス専用のHTMLソース取得プログラムを作成しました。

Function GetHttpDocFromYahooFinance(CD As String) As String
'指定した銘柄コードのYAHOOファイナンスのHTMLソースを返す
'存在しなければ空文字列を返す

    Dim S As String

    S = GetHttpDoc("http://stocks.finance.yahoo.co.jp/stocks/detail/?code=" & CD)
    If InStr(S, "一致する銘柄は見つかりませんでした") > 0 Then
        S = ""
    End If

    GetHttpDocFromYahooFinance = S

End Function

 

今回はここまで。

 - ACCESSデータベース, ブログ

↓ブログランキングに参加中!ご協力をお願いします!

にほんブログ村 IT技術ブログ プログラム・プログラマーへ
にほんブログ村

プログラマー ブログランキングへ

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です