Attribute VB_Name = "gy02_corpinfo" ' 各銘柄の日足データと財務情報を取得するためのクエリファイルを作成する ' 入力ファイル:"C:\mysql\mysqldata\csv\gy01_corpgrp.csv" Option Base 1 Sub gy02_corpinfo() '警告の表示を停止 Application.DisplayAlerts = False ' CSVファイル高速読み込み。CSVファイルをTXTファイルでSheet1に開く Dim corp_list(5000, 3) As String ' 行数5000列数3を確保する(カラム数は正確に) Dim list_idx As Integer ' 会社リストファイルの会社コード数 Const csv_dir As String = "C:\mysql\mysqldata\csv" ' CSVファイルのディレクトリ Const read_csv_name As String = "gy01_corpgrp.csv" ' CSVファイル名 If Dir(csv_dir & "\" & read_csv_name) <> read_csv_name Then MsgBox "ファイル「" & read_csv_name & "」はありません" Exit Sub End If Application.StatusBar = "( " & read_csv_name & " )読み込み中" ' CSVファイル読み込み list_idx = 1 Open csv_dir & "\" & read_csv_name For Input As #1 Do Until EOF(1) Input #1, corp_list(list_idx, 1), corp_list(list_idx, 2), corp_list(list_idx, 3) list_idx = list_idx + 1 Loop Close #1 ' セルに書き込み。必要なのは第1フィールド ' Sheets("Sheet1").Range(Cells(1, 1), Cells(list_idx - 1, 1)).Value = corp_list ' ---------------------------------------------------------------------------------------- Dim corp_fund_data(5000, 150) As String Dim corp_paste_row As Integer corp_paste_row = 1 Do While corp_paste_row < list_idx ' シートのクリア Sheets("Sheet1").Cells.ClearContents ' WEBクエリで各会社の単独決算推移を取得する With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://profile.yahoo.co.jp/biz/independent/" & corp_list(corp_paste_row, 1) & ".html", _ Destination:=Sheets("Sheet1").Range("A1")) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlAllTables .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With ' ------------------------------------------------------------------------------------------ ' WEBデータを加工して"Sheet2"へ ' 文字列「単独決算推移」の検索 Range("D5:D13").Select Selection.Find(What:="単独決算推移", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate current_idx = ActiveCell.Row '銘柄コードの行を取得 corp_fund_data(corp_paste_row, 1) = Cells(current_idx - 3, 4).Value ' 更新日 corp_fund_data(corp_paste_row, 2) = Cells(current_idx - 3, 1).Value ' 銘柄名 corp_fund_data(corp_paste_row, 3) = Cells(current_idx + 1, 5).Value ' 前期 corp_fund_data(corp_paste_row, 4) = Cells(current_idx + 2, 5).Value ' 決算年月日 corp_fund_data(corp_paste_row, 5) = Cells(current_idx + 3, 5).Value ' 決算発表日 corp_fund_data(corp_paste_row, 6) = Cells(current_idx + 4, 5).Value ' 決算月数 corp_fund_data(corp_paste_row, 7) = Cells(current_idx + 5, 5).Value ' 売上高 corp_fund_data(corp_paste_row, 8) = Cells(current_idx + 6, 5).Value ' 営業利益 corp_fund_data(corp_paste_row, 9) = Cells(current_idx + 7, 5).Value ' 経常利益 corp_fund_data(corp_paste_row, 10) = Cells(current_idx + 8, 5).Value ' 当期利益 corp_fund_data(corp_paste_row, 11) = Cells(current_idx + 9, 5).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 12) = Cells(current_idx + 10, 5).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 13) = Cells(current_idx + 11, 5).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 14) = Cells(current_idx + 12, 5).Value ' 配当区分 corp_fund_data(corp_paste_row, 15) = Cells(current_idx + 13, 5).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 16) = Cells(current_idx + 14, 5).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 17) = Cells(current_idx + 15, 5).Value ' 総資産 corp_fund_data(corp_paste_row, 18) = Cells(current_idx + 16, 5).Value ' 株主資本 corp_fund_data(corp_paste_row, 19) = Cells(current_idx + 17, 5).Value ' 資本金 corp_fund_data(corp_paste_row, 20) = Cells(current_idx + 18, 5).Value ' 有利子負債 corp_fund_data(corp_paste_row, 21) = Cells(current_idx + 19, 5).Value ' 繰越損益 corp_fund_data(corp_paste_row, 22) = Cells(current_idx + 20, 5).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 23) = Cells(current_idx + 21, 5).Value ' 含み損益 corp_fund_data(corp_paste_row, 24) = Cells(current_idx + 22, 5).Value ' ROA corp_fund_data(corp_paste_row, 25) = Cells(current_idx + 23, 5).Value ' ROE corp_fund_data(corp_paste_row, 26) = Cells(current_idx + 24, 5).Value ' 総資産経常利益率 corp_fund_data(corp_paste_row, 27) = Cells(current_idx + 1, 6).Value ' 2期前 corp_fund_data(corp_paste_row, 28) = Cells(current_idx + 2, 6).Value ' 決算年月日 corp_fund_data(corp_paste_row, 29) = Cells(current_idx + 3, 6).Value ' 決算発表日 corp_fund_data(corp_paste_row, 30) = Cells(current_idx + 4, 6).Value ' 決算月数 corp_fund_data(corp_paste_row, 31) = Cells(current_idx + 5, 6).Value ' 売上高 corp_fund_data(corp_paste_row, 32) = Cells(current_idx + 6, 6).Value ' 営業利益 corp_fund_data(corp_paste_row, 33) = Cells(current_idx + 7, 6).Value ' 経常利益 corp_fund_data(corp_paste_row, 34) = Cells(current_idx + 8, 6).Value ' 当期利益 corp_fund_data(corp_paste_row, 35) = Cells(current_idx + 9, 6).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 36) = Cells(current_idx + 10, 6).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 37) = Cells(current_idx + 11, 6).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 38) = Cells(current_idx + 12, 6).Value ' 配当区分 corp_fund_data(corp_paste_row, 39) = Cells(current_idx + 13, 6).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 40) = Cells(current_idx + 14, 6).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 41) = Cells(current_idx + 15, 6).Value ' 総資産 corp_fund_data(corp_paste_row, 42) = Cells(current_idx + 16, 6).Value ' 株主資本 corp_fund_data(corp_paste_row, 43) = Cells(current_idx + 17, 6).Value ' 資本金 corp_fund_data(corp_paste_row, 44) = Cells(current_idx + 18, 6).Value ' 有利子負債 corp_fund_data(corp_paste_row, 45) = Cells(current_idx + 19, 6).Value ' 繰越損益 corp_fund_data(corp_paste_row, 46) = Cells(current_idx + 20, 6).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 47) = Cells(current_idx + 21, 6).Value ' 含み損益 corp_fund_data(corp_paste_row, 48) = Cells(current_idx + 22, 6).Value ' ROA corp_fund_data(corp_paste_row, 49) = Cells(current_idx + 23, 6).Value ' ROE corp_fund_data(corp_paste_row, 50) = Cells(current_idx + 24, 6).Value ' 総資産経常利益率 corp_fund_data(corp_paste_row, 51) = Cells(current_idx + 1, 7).Value ' 3期前 corp_fund_data(corp_paste_row, 52) = Cells(current_idx + 2, 7).Value ' 決算年月日 corp_fund_data(corp_paste_row, 53) = Cells(current_idx + 3,7).Value ' 決算発表日 corp_fund_data(corp_paste_row, 54) = Cells(current_idx + 4, 7).Value ' 決算月数 corp_fund_data(corp_paste_row, 55) = Cells(current_idx + 5, 7).Value ' 売上高 corp_fund_data(corp_paste_row, 56) = Cells(current_idx + 6, 7).Value ' 営業利益 corp_fund_data(corp_paste_row, 57) = Cells(current_idx + 7,7).Value ' 経常利益 corp_fund_data(corp_paste_row, 58) = Cells(current_idx + 8, 7).Value ' 当期利益 corp_fund_data(corp_paste_row, 59) = Cells(current_idx + 9, 7).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 60) = Cells(current_idx + 10, 7).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 61) = Cells(current_idx + 11, 7).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 62) = Cells(current_idx + 12, 7).Value ' 配当区分 corp_fund_data(corp_paste_row, 63) = Cells(current_idx + 13, 7).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 64) = Cells(current_idx + 14, 7).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 65) = Cells(current_idx + 15, 7).Value ' 総資産 corp_fund_data(corp_paste_row, 66) = Cells(current_idx + 16, 7).Value ' 株主資本 corp_fund_data(corp_paste_row, 67) = Cells(current_idx + 17, 7).Value ' 資本金 corp_fund_data(corp_paste_row, 68) = Cells(current_idx + 18, 7).Value ' 有利子負債 corp_fund_data(corp_paste_row, 69) = Cells(current_idx + 19, 7).Value ' 繰越損益 corp_fund_data(corp_paste_row, 70) = Cells(current_idx + 20, 7).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 71) = Cells(current_idx + 21, 7).Value ' 含み損益 corp_fund_data(corp_paste_row, 72) = Cells(current_idx + 22, 7).Value ' ROA corp_fund_data(corp_paste_row, 73) = Cells(current_idx + 23, 7).Value ' ROE corp_fund_data(corp_paste_row, 74) = Cells(current_idx + 24, 7).Value ' 総資産経常利益率 ' --------------------------------------------------------------------------- ' シートのクリア Sheets("Sheet1").Cells.ClearContents ' WEBクエリで各会社の連結決算推移を取得する With ActiveSheet.QueryTables.Add(Connection:= _ "URL;http://profile.yahoo.co.jp/biz/consolidate/" & corp_list(corp_paste_row, 1) & ".html", _ Destination:=Sheets("Sheet1").Range("A1")) .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlAllTables .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .Refresh BackgroundQuery:=False End With ' ------------------------------------------------------------------------------------------ ' WEBデータを加工して"Sheet2"へ ' 文字列「連結決算推移」の検索 Range("D5:D13").Select Selection.Find(What:="連結決算推移", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate current_idx = ActiveCell.Row '銘柄コードの行を取得 corp_fund_data(corp_paste_row, 75) = Cells(current_idx - 3, 4).Value ' 更新日 corp_fund_data(corp_paste_row, 76) = Cells(current_idx - 3, 1).Value ' 銘柄名 corp_fund_data(corp_paste_row, 77) = Cells(current_idx + 1, 5).Value ' 前期 corp_fund_data(corp_paste_row, 78) = Cells(current_idx + 2, 5).Value ' 決算年月日 corp_fund_data(corp_paste_row, 79) = Cells(current_idx + 3, 5).Value ' 決算発表日 corp_fund_data(corp_paste_row, 80) = Cells(current_idx + 4, 5).Value ' 決算月数 corp_fund_data(corp_paste_row, 81) = Cells(current_idx + 5, 5).Value ' 売上高 corp_fund_data(corp_paste_row, 82) = Cells(current_idx + 6, 5).Value ' 営業利益 corp_fund_data(corp_paste_row, 83) = Cells(current_idx + 7, 5).Value ' 経常利益 corp_fund_data(corp_paste_row, 84) = Cells(current_idx + 8, 5).Value ' 当期利益 corp_fund_data(corp_paste_row, 85) = Cells(current_idx + 9, 5).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 86) = Cells(current_idx + 10, 5).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 87) = Cells(current_idx + 11, 5).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 88) = Cells(current_idx + 12, 5).Value ' 配当区分 corp_fund_data(corp_paste_row, 89) = Cells(current_idx + 13, 5).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 90) = Cells(current_idx + 14, 5).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 91) = Cells(current_idx + 15, 5).Value ' 総資産 corp_fund_data(corp_paste_row, 92) = Cells(current_idx + 16, 5).Value ' 株主資本 corp_fund_data(corp_paste_row, 93) = Cells(current_idx + 17, 5).Value ' 資本金 corp_fund_data(corp_paste_row, 94) = Cells(current_idx + 18, 5).Value ' 有利子負債 corp_fund_data(corp_paste_row, 95) = Cells(current_idx + 19, 5).Value ' 繰越損益 corp_fund_data(corp_paste_row, 96) = Cells(current_idx + 20, 5).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 97) = Cells(current_idx + 21, 5).Value ' 含み損益 corp_fund_data(corp_paste_row, 98) = Cells(current_idx + 22, 5).Value ' ROA corp_fund_data(corp_paste_row, 99) = Cells(current_idx + 23, 5).Value ' ROE corp_fund_data(corp_paste_row, 100) = Cells(current_idx + 24, 5).Value ' 総資産経常利益率 corp_fund_data(corp_paste_row, 101) = Cells(current_idx + 1, 6).Value ' 2期前 corp_fund_data(corp_paste_row, 102) = Cells(current_idx + 2, 6).Value ' 決算年月日 corp_fund_data(corp_paste_row, 103) = Cells(current_idx + 3, 6).Value ' 決算発表日 corp_fund_data(corp_paste_row, 104) = Cells(current_idx + 4, 6).Value ' 決算月数 corp_fund_data(corp_paste_row, 105) = Cells(current_idx + 5, 6).Value ' 売上高 corp_fund_data(corp_paste_row, 106) = Cells(current_idx + 6, 6).Value ' 営業利益 corp_fund_data(corp_paste_row, 107) = Cells(current_idx + 7, 6).Value ' 経常利益 corp_fund_data(corp_paste_row, 108) = Cells(current_idx + 8, 6).Value ' 当期利益 corp_fund_data(corp_paste_row, 109) = Cells(current_idx + 9, 6).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 110) = Cells(current_idx + 10, 6).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 111) = Cells(current_idx + 11, 6).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 112) = Cells(current_idx + 12, 6).Value ' 配当区分 corp_fund_data(corp_paste_row, 113) = Cells(current_idx + 13, 6).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 114) = Cells(current_idx + 14, 6).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 115) = Cells(current_idx + 15, 6).Value ' 総資産 corp_fund_data(corp_paste_row, 116) = Cells(current_idx + 16, 6).Value ' 株主資本 corp_fund_data(corp_paste_row, 117) = Cells(current_idx + 17, 6).Value ' 資本金 corp_fund_data(corp_paste_row, 118) = Cells(current_idx + 18, 6).Value ' 有利子負債 corp_fund_data(corp_paste_row, 119) = Cells(current_idx + 19, 6).Value ' 繰越損益 corp_fund_data(corp_paste_row, 120) = Cells(current_idx + 20, 6).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 121) = Cells(current_idx + 21, 6).Value ' 含み損益 corp_fund_data(corp_paste_row, 122) = Cells(current_idx + 22, 6).Value ' ROA corp_fund_data(corp_paste_row, 123) = Cells(current_idx + 23, 6).Value ' ROE corp_fund_data(corp_paste_row, 124) = Cells(current_idx + 24, 6).Value ' 総資産経常利益率 corp_fund_data(corp_paste_row, 125) = Cells(current_idx + 1, 7).Value ' 3期前 corp_fund_data(corp_paste_row, 126) = Cells(current_idx + 2, 7).Value ' 決算年月日 corp_fund_data(corp_paste_row, 127) = Cells(current_idx + 3,7).Value ' 決算発表日 corp_fund_data(corp_paste_row, 128) = Cells(current_idx + 4, 7).Value ' 決算月数 corp_fund_data(corp_paste_row, 129) = Cells(current_idx + 5, 7).Value ' 売上高 corp_fund_data(corp_paste_row, 130) = Cells(current_idx + 6, 7).Value ' 営業利益 corp_fund_data(corp_paste_row, 131) = Cells(current_idx + 7,7).Value ' 経常利益 corp_fund_data(corp_paste_row, 132) = Cells(current_idx + 8, 7).Value ' 当期利益 corp_fund_data(corp_paste_row, 133) = Cells(current_idx + 9, 7).Value ' 1株当り当期利益 corp_fund_data(corp_paste_row, 134) = Cells(current_idx + 10, 7).Value ' 調整1株当り利益 corp_fund_data(corp_paste_row, 135) = Cells(current_idx + 11, 7).Value ' 1株当り配当 corp_fund_data(corp_paste_row, 136) = Cells(current_idx + 12, 7).Value ' 配当区分 corp_fund_data(corp_paste_row, 137) = Cells(current_idx + 13, 7).Value ' 1株当り株主資本 corp_fund_data(corp_paste_row, 138) = Cells(current_idx + 14, 7).Value ' 発行済み株式総数 corp_fund_data(corp_paste_row, 139) = Cells(current_idx + 15, 7).Value ' 総資産 corp_fund_data(corp_paste_row, 140) = Cells(current_idx + 16, 7).Value ' 株主資本 corp_fund_data(corp_paste_row, 141) = Cells(current_idx + 17, 7).Value ' 資本金 corp_fund_data(corp_paste_row, 142) = Cells(current_idx + 18, 7).Value ' 有利子負債 corp_fund_data(corp_paste_row, 143) = Cells(current_idx + 19, 7).Value ' 繰越損益 corp_fund_data(corp_paste_row, 144) = Cells(current_idx + 20, 7).Value ' 株主資本比率 corp_fund_data(corp_paste_row, 145) = Cells(current_idx + 21, 7).Value ' 含み損益 corp_fund_data(corp_paste_row, 146) = Cells(current_idx + 22, 7).Value ' ROA corp_fund_data(corp_paste_row, 147) = Cells(current_idx + 23, 7).Value ' ROE corp_fund_data(corp_paste_row, 148) = Cells(current_idx + 24, 7).Value ' 総資産経常利益率 corp_paste_row = corp_paste_row + 1 Loop ' セルに書き込み Sheets("Sheet2").Select Range(Cells(1, 1), Cells(corp_paste_row - 1, 148)).Value = corp_fund_data ' ------------------------------------------------------------------------------------------ ' ファイル名を日付にしてCSV形式で保存 'Sheets("Sheet2").Name = Date$ Sheets("Sheet2").Select ' ChDir csv_dir ActiveWorkbook.SaveAs Filename:=csv_dir & "\" & "yt" & Mid(Date$, 1, 4) & Mid(Date$, 6, 2) & Mid(Date$, 9, 2) & ".csv", _ FileFormat:=xlCSV, CreateBackup:=False 'Sheets("yt" & Mid(Date$, 1, 4) & Mid(Date$, 6, 2) & Mid(Date$, 9, 2)).Name = "Sheet2" ' ------------------------------------------------------------------------------------------ End Sub