アプリ版:「スタンプのみでお礼する」機能のリリースについて

ログインが必要なサイトのデータを取り込みたく、
色々調べたところUserFormを作りWebBrowserで直接ログインすれば良いことが分かりました。
ここまでは作成できましたがUserForm上に表示されているデータを取り込むにはどうすればよいでしょうか。
詳しく教えていたたげると幸いです。

A 回答 (1件)

こんばんは。



>ログインが必要なサイトのデータを取り込みたく、
ということは、ログイン自体は、WebBrowserの中で行うという意味でしょうか。
正直、そういうスタイルの方式ではやったことはありません。

試しにやってサンプルを作ってみました。
このページのタイトルを取るものです。
決まったスタイルというものはありませんが、.getElementsbyClassName("q_article_info clearfix") などは、自分で探して持ってこなければなりません。この場合、私は、FireFox の 'FireBug' を使います。InternetExplorer にも、強力なツールが標準でついていますが、これは好きずきです。

むろん、WebBrowser1.Document の時点で、全部、 WebBrowser1.Document.Body.InnerText として内容をダウンロードさせてしまうという方法もないとは言えません。必要な情報を、「正規表現」で抜き取るのが一番楽です。「正規表現」は、お好きなツールを使えばよいのですが、VBAでは、標準的に、VBScript.RegExp と呼び出して使います。

'//UserForm, WebBrowser, CommandButton

Private Sub UserForm_Initialize()
'アクセスの方法は、いろいろありますから、これだけではありません。
 Const URL As String = "http://oshiete.goo.ne.jp/qa/9099834.html"
 UserForm1.WebBrowser1.Navigate2 URL
End Sub

Private Sub CommandButton1_Click()
 Dim objHTML As Object '←実際に、HTMLfile オブジェクトでした
 Set objHTML = WebBrowser1.Document
 With objHTML
  Dim q_a_a
  Dim sTitle As String
  Set q_a_a = .getElementsbyClassName("q_article_info clearfix") '←マニュアルで探す
  If q_a_a.Length >= 0 Then sTitle = q_a_a(0).ChildNodes.Item(3).innerText
  End If
 End With
 If Len(sTitle) > 0 Then
  MsgBox "タイトル: " & sTitle
 End If
End Sub
'///
    • good
    • 0
この回答へのお礼

おっしゃる通り、WebBrowserの中でログインしようとしていました。
アクセスの方法が他にもあるということを初めて知りました…
上記のサンプルを基に色々と試してみようと思います。
ありがとうございます。

お礼日時:2015/11/03 21:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています