エクセルでウェブの情報を取得したいと思っていたのですが、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の開始位置が変わっても勝手にトレースしてくれますね。考えようによっては、その方がいいなあ。