20110227

ExcelのWebQueryをVBAでハンドリングする。

なるほど。そう言うことなのか。

エクセルでウェブの情報を取得したいと思っていたのですが、Webqueryをマクロで操作できるんですね。URL指定は分かりますが、どのテーブルを取得するかを、どう判定しているのか?

この「.WebTables = "7"」という記述がそれに当たります。たしかに7つめのTableタグが私が指定したテーブルに当たっていました。



With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://jp.moneycentral.msn.com" _
, Destination:=Range("$A$151"))
.Name = "6501&lstStatement=CashFlow&stmtView=Ann"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = True
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "7"
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.WebDisableRedirections = False
.Refresh Backgrou

これで、VBAで色々出来そう。コーディング含めてがんばろう。

その後わかったこと。このWebTablesに、数字ではなくタイトルが入る場合もあるということ。

.WebTables = """tblHistoryTable"""

これは、テーブルのid要素です。

table id="tblHistoryTable"

なるほど。こういうソースであれば、構成が変わって、Tableの開始位置が変わっても勝手にトレースしてくれますね。考えようによっては、その方がいいなあ。

0 コメント: