前回の訂正。
ファイルを保存する時にはP:ドライブに保存してください。すると、保存したパソコンとは別のパソコンでも、ファイルを使うことが出来ます。
今日の内容
エクセル:WebクエリVBA:While文、Until文
インターネットからのデータの取り込み
前回の講義を思い出しながら、次のプログラムを実行してみてください。書き写すと時間がかかるので、コピーしてください。
Sub 表の取り込み()
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://table.yahoo.co.jp/t?s=998405.t&g=d", Destination:=Range("$A$1"))
.Name = "t?s=998405.t&g=d"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "19"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh BackgroundQuery:=False
End With
End Sub
これはYahoo!ファイナンスからTOPIXの日次データを取り込むためのプログラムです。そうは言っても、ここに書かれた言葉を全部覚える必要はありません。順を追って説明します。
Excelを立ち上げて「データ」の「Webクエリ」をクリックします。すると別の画面が開くので、アドレス欄にhttp://quote.yahoo.co.jp/と書きます。
右側の「TOPIX」をクリックして、次の画面中央の「時系列」をクリックします。
TOPIXの値の表の左上にチェックをつけて「取り込み」をクリックします。
ここですぐにOKを押さずに「プロパティ」を押します。
「既存のセルを新規データで上書きし、使用されていないセルはクリアする」に●をつけてOKを押し、前の画面に戻ったらもう一度OKを押します。
するとこのようにエクセルのシートに表がコピーされます。
ここまで出来たら、先週の「マクロの記録」を使って、この取り込む作業をマクロに記録すると、先ほどのプログラムが記録されます。
今後必要に応じて修正することにします。
While文とUntil文
読み込んだ表が何行あるか数えましょう。最初の行からチェックし始めて、空白でなければ次の行をチェックする、空白なら終わり、というロジックで、行の数を数えます。空白でない限り次の行を見ることを繰り返すのですからWhile文を使います。
i=1
Do While cells(i,1) <> ""
i = i + 1
Loop
MsgBox (i)
これで行数を正しく数えていますか?正しくない場合は理由を考えて、正しく数えるプログラムを書いてください。
出来た人は終値の平均を求めるプログラムを考えてください。
繰り返しには他の構文もありますので、まとめて紹介します。
-
Do While 条件
プログラム
Loop
最初に条件を判断し、条件が満たされている間(While)、Loopまでのプログラムを実行します。 -
Do
プログラム
Loop While 条件
まずプログラムを実行します。 その後条件が満たされている間(While)、Doに戻ってプログラムを実行します。 -
Do Until 条件
プログラム
Loop
最初に条件を判断し、条件が満たされるまで(Until)、Loopまでのプログラムを実行します。 -
Do
プログラム
Loop Until 条件
まずプログラムを実行します。 その後条件が満たされるまで(Until)、Doに戻ってプログラムを実行します。
0 件のコメント:
コメントを投稿