[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『WEBクエリで指定URLのページ内容取得』(田吾作)
こんにちは、よろしくお願いいたします。
下記のコードはWEBクエリで指定URLのページ内容をシートに取り込む作業をマクロの自動記録し 少し編集したものです。
Sub test() Dim myurl As String Dim r As Range Set r = ActiveCell myurl = "http://www.excel.studio-kazu.jp/cgi-bin/pastlogs/pastlogs.cgi" With ActiveSheet.QueryTables.Add(Connection:="URL;" & myurl, Destination:=r) .Name = "excelgakkou" .FieldNames = True .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .WebSelectionType = xlEntirePage .WebFormatting = xlWebFormattingNone .WebPreFormattedTextToColumns = True .WebConsecutiveDelimitersAsOne = True .WebSingleBlockTextImport = False .WebDisableDateRecognition = False .WebDisableRedirections = False .Refresh BackgroundQuery:=False End With End Sub
このWEBクエリで取り込むURLを [[20150928093336]] 『「エクセルの学校」の過去ログをVBAで表示したい』(田吾作) でご教示いただいた内容↓
Sub test2() Dim i As Long Dim nengetu As String Dim MyShell As Object, objIE As Object, MyWindow As Object Dim Ck As Boolean nengetu = Format(DateSerial(Year(Date), Month(Date) - 1, 1), "yyyymm") ' * 1 Set MyShell = CreateObject("Shell.Application") For Each MyWindow In MyShell.Windows If UCase(Right(MyWindow.FullName, 12)) = "IEXPLORE.EXE" Then Set objIE = MyWindow: Ck = True: Exit For End If Next MyWindow If Ck = False Then Set objIE = CreateObject("InternetExplorer.Application") End If With objIE .Visible = True .navigate "http://www.excel.studio-kazu.jp/cgi-bin/pastlogs/pastlogs.cgi" Do While .Busy = True DoEvents Loop Do While .Document.ReadyState <> "complete" DoEvents Loop With .Document With .Forms(0) For i = 0 To .All("listbox_1").Length - 1 If .All("listbox_1")(i).Value = nengetu Then .All("listbox_1")(i).Selected = True Exit For End If Next i .Submit End With End With End With Set objIE = Nothing End Sub
↑を反映させて、コンボボックスで選択したものを反映させた 後のIEページ内容を取得するように変えたいのですが、そもそもこんなことは可能 でしょうか? といいますのは、 手作業でWEBクエリでページ内容を取得した場合、WEBクエリで表示されたページで コンボボックス選択してページ内容が変化した状態で取り込んでも、実際にシートに 表示されるのは、変更前の状態のページ内容だからです。
実際に取り込みたいのは、エクセルの学校ではなく、他のURLです。 それはパスワード入力等必要ですので、申し訳ございませんが、実際のコードを アップすることができません。
もし、不可能なら、IEのInnerHtmlやInnerTextを取得したりIEのテーブルを取得したり する方法に変えようと思います。こちらの方は、ネット検索で参考ページが見つかり ました。
もしWEBクエリで可能でしたらご教示お願いいたします。
< 使用 Excel:Excel2007、使用 OS:WindowsVista >
なお、ここの掲示板ならば、リストを選択せずとも、以下のURLでも月毎の一覧が得られたりします。
横にずらーっと並ぶので、Webクエリには向きませんが、Documentプロパティから情報を拾うなら、こんな感じで引数を変えつつジャンプの方が楽かもです。
(ログイン名とパスワードも、同様に指定できる場合が多いですよ)
http://www.excel.studio-kazu.jp/archive_list.php?ym=201508 現在参照不可
(???) 2015/09/28(月) 15:48
???さん、ご回答ありがとうございます。
IEのテーブルを取得する方法で検討します。
実際のページはコンボボックスがあるので学校の過去ログのページを参考に出させていただきましたが、 掲示板形式ではありません。
>なお、ここの掲示板ならば、リストを選択せずとも、以下のURLでも月毎の一覧が得られたりします。
情報ありがとうございます。 参考にさせていただきます。
ありがとうございました。 (田吾作) 2015/09/28(月) 16:00
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.