[[20150928144758]] 『WEBクエリで指定URLのページ内容取得』(田吾作) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『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 >


Webクエリは、テーブル化されたデータを取り込む際には簡単ですが、掲示板のデータは縦にずらずらと並ぶので、向いていないと思います。
実際に情報を得たいURLは掲示板形式なのか、HTMLの造り次第ですね。
また、目的のページに飛ぶところまで実現できているのですから、あとはそのHTMLの中を探すコードのほうが良いでしょう。

なお、ここの掲示板ならば、リストを選択せずとも、以下の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.