見出し画像

【IE操作VBA】サイトのソースコードを分析するVBA

割引あり

VBAを使ってサイトの情報を取得したりサイト内のボタンをクリック操作したい!

でも、サイトのソースコードが複雑で理解できない!


こんな悩みを解決する「ソースコード分析VBA」を開発したのでご紹介します。


「ソースコード分析VBA」の概要がこちら


  • ソースコードを構成している要素(HTMLDocument)をリスト化

  • サイト内で取得したい情報を発見しやすくなる

  • 利用される可能性が高い要素を自動的にピックアップする

  • 詳しく分析すると「ボタンをクリックする」「テキストボックスに文字を入力する」ことが可能になる


必要な情報を見やすくリスト化できるので、

IE操作VBA開発に欠かせない超便利ツール

だと思っています。


生のソースコードからVBA処理に必要なキーワードを発見するめちゃくちゃ大変!至難の業です。。


amazonのソースコードがこちら

生のソースコードから「商品名」に関するキーワードを見つけるのって難しくないですか。


私には無理です!


IE操作VBAに興味を持ち始めた頃、

テキスト検索機能を使って生のソースコードからキーワードを見つけようと頑張っていましたが3日ほどで挫折。

VBAの作成にこんな時間を使っていたら逆に効率が悪い!!!


挫折してからしばらくして思いついたのが「ソースコード分析VBA」です。


生のソースコードは全く理解できないけど、一覧表にすればなんとなくわかる!そして規則性も見つけやすくなる!!


「ソースコード分析VBA」を使うようになってから、

なんとかVBAでIEを操作することができるようになりました。


IE操作VBAに関してはまだまだ勉強不足ですけど。。。。


VBAを使ってIE操作をしてみたい!サイトの情報を取得するエクセル業務の効率をアップさせたい!

と考えている方は是非チェックしてみてください。


ソースコード分析VBAとは

ソースコード分析VBAは、

サイトのソースコードを要素(Document)ごとに分けて一覧表にするVBA

です。


設定されているVBAのコードがこちら

Sub ソースコード分析ツール()
    Dim objIE As Object
    Set objIE = CreateObject("InternetExplorer.Application")
    Dim txtInput As HTMLInputElement
    Dim txtoutput As HTMLInputElement
    Dim button As HTMLInputElement
    Dim n As Long
    Dim objTAG As Object
    Dim word As String
    ''''''''''''''''''''''検索商品キーワードの検索''''''''''''''''
    word = Cells(4, 2)
    If Cells(4, 2) = "" Then
    MsgBox "URLをB4セルに入力してください"
    Exit Sub
    Else
    End If
    Call リセット
    objIE.Visible = True
    objIE.Navigate word
    Application.ScreenUpdating = False
    Do While objIE.Busy Or objIE.ReadyState < READYSTATE_COMPLETE
    DoEvents
    Loop
        On Error Resume Next
        n = 6
        'Set txtInput = objIE.Document
        For Each objTAG In objIE.Document.all
            n = n + 1
            Cells(n, 1) = objIE.Name
            Cells(n, 2) = "'" & TypeName(objTAG)
            Cells(n, 3) = "'" & objTAG.tagName
            Cells(n, 4) = objTAG.Name
            Cells(n, 5) = "'" & Left(objTAG.innerText, 256)
            Cells(n, 6) = "'" & Left(objTAG.innerHTML, 256)
            Cells(n, 7) = "'" & Left(objTAG.outerHTML, 256)
            Cells(n, 8) = objTAG.href
        Next
End Sub


VBAが得意!と言う方はコピペして使ってみてください。


VBAの処理内容がこちら

  1. サイトのソースコードを取得

  2. objIE.Name」「objTAG.innerText」「objTAG.href」など、要素ごとに分けた一覧表を作成

  3. 利用される可能性の高い要素を色を変えてピックアップ


羅列されたコードを仕分けし、VBAに必要な情報をピックアップしてくれるVBAです。


使い方

1.B4セルにサイトURLを入力し、「分析実行」ボタンを押下

使い方はたったこれだけ。


注意点としては、

B4セルに入力するURLはInternetExplorerで開いたサイトのURLを記入する

です。


InternetExplorer以外のブラウザで開いたサイトURLでは正常動作しないことがあります。

MicrosoftEdgeやchromeでのサイトURLは使用しないでください。


VBA実行結果

膨大な量の情報を1分足らずで一覧表にまとめることができます。

さらに、

「商品名」「価格」などが関係している項目の背景色が自動編集されるのでめちゃくちゃ使いやすい。


分析結果をIE操作VBAに反映させる考え方

ソースコード分析VBAを使って要素ごとに仕分けしたけど、このあとどうやって情報を取り出すの?

と疑問に感じる方が多いかと思いまので、「分析結果をIE操作VBAに反映させる考え方」をザックリご紹介します。


IE操作VBA(抜粋)と分析結果の比較がこちら

'''''''''''''''''''''価格を入力''''''''''''''''
        If objIE.Document.all(i).tagName = "A" And InStr(objIE.Document.all(i).innerHTML, "a-price-symbol") Then
        Cells(gyo, 3) = "'" & Left(objIE.Document.all(i + 3).innerText, 256)
        Else
        End If

「価格」を取得するVBAは、

C列(tagName)がA、かつF列(innerHTML)のテキスト内に「a-price-symbol」が含まれているとき、3行下のE列(innerText)を取得する

という内容です。


分析結果の規則性を利用して情報を取得しています。

この方法を使えば「商品名」「口コミ件数」などの情報も取得可能。


難しいポイントは規則性を見つけること。


例えば、

F列(innerHTML)のテキスト内に「a-price-symbol」が含まれていること

みたいな規則性を見つけるのは結構難しい作業になります。


ソースコード分析VBAを使って「規則性」を発見してみてください。


業務内容に合わせてIE操作VBAを導入する方法

作業内容に合わせた「サイト情報を取得するVBA」を導入するには、

ソースコードの規則性を発見しキーワードを取り出すコードを一つ一つ設定する

しかありません。


結構大変な作業ですよね。。。


下記のコードは

amazonから「商品名」「価格」「評価」「評価件数」「URL」を取得するVBA(抜粋)です。

'''''''''''''''''''''価格を入力''''''''''''''''
        If objIE.Document.all(i).tagName = "A" And InStr(objIE.Document.all(i).innerHTML, "a-price-symbol") Then
        Cells(gyo, 3) = "'" & Left(objIE.Document.all(i + 3).innerText, 256)
        Else
        End If
'''''''''''''''''''''評価を入力''''''''''''''''
        If objIE.Document.all(i).tagName = "A" And InStr(objIE.Document.all(i).innerHTML, "つ星のうち") Then
        Cells(gyo, 4) = Left(objIE.Document.all(i).innerText, 256)
        Cells(gyo, 4).WrapText = False
        Else
        End If
'''''''''''''''''''''件数を入力''''''''''''''''
        If objIE.Document.all(i).tagName = "A" And InStr(objIE.Document.all(i).innerHTML, "a-size-base s-underline-text") Then
        Cells(gyo, 5) = "'" & Left(objIE.Document.all(i).innerText, 256)
        Else
        End If
'''''''''''''''''''''URLを入力''''''''''''''''
        If objIE.Document.all(i).tagName = "A" And InStr(objIE.Document.all(i).innerHTML, "a-size-base-plus a-color-base a-text-normal") Then
        Cells(gyo, 6) = objIE.Document.all(i).href
        ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(gyo, 6), Address:=objIE.Document.all(i).href
        Else
        End If


これだけのコードを設定するのにめちゃくちゃ時間がかかりました。


IE操作VBAを初めて設定するという方は、

「ソースコードの規則性を把握析する」作業

で苦労するかと思います。


私のように全く理解しない状態でもVBAを設定することは可能なので、興味のある方は挑戦してみてください。


ですが、

プログラミングの知識もないしソースコードなんて分析してる暇なんてない!!!

という方が多いのではないでしょうか。


こんな方は、マメBlogのVBA開発サービスの利用を検討してみてください。


依頼方法は、

現状このようなエクセル作業をしていて自動化したい!

と伝えるだけ!!


業務内容に合わせたVBAの提案、開発を代行させていただきます。


「今やっている作業にIE操作VBAを導入すれば作業効率をアップできるかも。。。」

と感じた方はお気軽にお問い合わせください。


VBAの設定が可能なのか、費用はどれくらいかかるのか、など

すぐに回答させていただきます。

>>> マメBlogのVBA開発依頼はこちら


ソースコード分析VBAのダウンロード


IE操作VBA開発に必要な「ソースコード分析VBA」をダウンロードして使用することができます。

作業効率を格段にアップさせることができるのでIE操作VBAに興味のある方は早めにゲットしておいてください。

ここから先は

0字 / 1ファイル

この記事が気に入ったらサポートをしてみませんか?