2016-06-16 1 views
0

IEページを開き、最初のドロップダウンを入力して「キャラバン」を表示するコードがあります。しかし、私のコードは、ドロップダウンからキャラバンを選択していません。VBAコードで、クラスがあるがIDがないドロップダウンから値を選択しない

ウェブサイトは次のとおりです。

https://insurance.qbe.com.au/portal/caravan/form/estimate

私は次のように向けますドロップダウンのソースコードを検査するために右クリックすると:

enter image description here

Iこの下にソースコードを展開すると、次のように表示されます。

enter image description here

enter image description here

あなたが見ることができるように、ドロップダウンに関連付けられた値は、よく私が最初に向けたソースコードの下にあります。ここで

は、私が「キャラバン」を試してみて、選択するために使用してきたコードです:上記のコードでは

Sub GetQuote() 

Dim IE As Object 
Set IE = CreateObject("InternetExplorer.Application") 
IE.navigate ("https://insurance.qbe.com.au/portal/caravan/form/estimate") 
IE.Visible = True 

Do 
DoEvents 
Loop Until IE.readystate = 4 

Dim lists, l 
Set lists = IE.document.getElementsByTagName("select")(0) 

For Each l In lists 

If InStr(1, l.className, "form-control ng-pristine ng-untouched ng-valid", 1) Then 
l.SelectedIndex = 0 
End If 

Next 

Application.Wait (Now + TimeValue("00:00:03")) 

End Sub 

私は、ソースコードの非常に最後のビットを参照することにより、「キャラバン」を選択しようとしていました私は上に貼り付けました(つまり、すべての選択タグを取得し、そのクラス名に "フォームコントロールng-unstched ng-valid"が含まれる項目が見つかるまでタグ内のすべての項目をチェックしてから、これは明らかにうまくいきませんでした。ここで私が試したもう一つのコードはもう一度ありません。(これは上のコードを少し修正したものです。ドロップダウン、私が貼り付けられた非常に最初のソースコードになりますD):

For Each l In lists 
If InStr(1, l.className, "ui-select-search ui-select-toggle ng-pristine ng-valid ng-touched", 1) Then 
    l.SelectedIndex = 0 
+0

ように私はその日のコースをバリエーションの多くを試してみたが、私はnowehere取得しています。私は 'Dim lists、l'から' Next'の行まですべてを削除しようとしていて、IE.document.elements( "z-async-select-mobile" ").SelectedIndex = 0' – chris

+0

私はちょうど最初の操作のために、適切なソースコードが何であるか見ることができないようです – chris

+0

すべての入力要素を取得しようとしましたか?私は遊びを持っています –

答えて

0

はこのオファーに任意のヘルプではなく、それはあなたのソリューションですかどうかわからを行いますが、フォーマットのためにここに追加しました。

Sub test() 

Dim ie As SHDocVw.InternetExplorer 
Dim htmlDoc As MSHTML.HTMLDocument 
Dim inputCollection As MSHTML.IHTMLElementCollection 
Dim inputElement As MSHTML.HTMLInputElement 

Set ie = New SHDocVw.InternetExplorer 

ie.navigate ("https://insurance.qbe.com.au/portal/caravan/form/estimate") 

Do While ie.Busy Or ie.readyState <> READYSTATE_COMPLETE 
    DoEvents 
Loop 

ie.Visible = 1 

Set htmlDoc = ie.document 

Set inputCollection = htmlDoc.getElementsByTagName("INput") 

For Each inputElement In inputCollection 

    Debug.Print inputElement.className 

Next inputElement 

'またはこの

Set inputElement = htmlDoc.getElementsByClassName("ui-select-search ui-select-toggle ng-pristine ng-valid ng-touched")(0) 


End Sub 
+0

感謝の応答 - あなたのコードの最後のビットを使って(そしてMsgboxでそれを変更すると、少なくとも入力タグ内に格納されている各クラス名を呼び出していたことがわかりました)私はまだドロップダウンからキャラバンを選択することができませんリスト – chris

+0

WebコントロールおよびHTMLのオブジェクトを使用して正しく設定すると、ローカルおよびIntellisenseを使用して選択リスト項目にアクセスできます。 –

+0

inputElement.Value = "キャラバン" –

関連する問題