[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『WEBクエリで指定URLのページ内容取得』(田吾作)
こんにちは、よろしくお願いいたします。
下記のコードはWEBクエリで指定URLのページ内容をシートに取り込む作業をマクロの自動記録し 少し編集したものです。
Sub test()
Dim myurl As String
Dim r As Range
Set r = ActiveCell
myurl = "https://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 "https://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プロパティから情報を拾うなら、こんな感じで引数を変えつつジャンプの方が楽かもです。
(ログイン名とパスワードも、同様に指定できる場合が多いですよ)
https://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.