2016-08-23 9 views
5

データを抽出するWebページがあります。私はVBAで、画像要素をクリックしてからフォームを送信し、データを含むポップアップを作成する以外に、すべてをうまくやることができます。画像要素の属性のVBAを使用しているときにForm.Submitが実行されない

一つが「a12-545」=

「をproductguid」と呼ばれ、文字列値を有しています。

マウスの画像要素をクリックする前に、フォームのHTMLコードが次のように表示されます。

<form id="GetProductQuantitiesForAccessibleBranches" action="GetProductQuantitiesForAccessibleBranches" method="post"> 
    <input type="hidden" name="ProductGuid" value="a12-545"> 
</form> 

私はそれが前の画像要素からproductguid値がフォームに渡されることを前提とこれに基づき:

<form id="GetProductQuantitiesForAccessibleBranches" action="GetProductQuantitiesForAccessibleBranches" method="post"> 
    <input type="hidden" name="ProductGuid" value=""> 
</form> 

この

は私が手動でマウスでクリックした後HTMLコードです提出された。ここで は私のVBAのコードは次のように見えるものです:

'Change the input element value 
ie.Document.getElementById("GetProductQuantitiesForAccessibleBranches").all.item(0).value = "a12-545" 

'Submit the form 
ie.Document.getElementyId("GetProductQuantitiesForAccessibleBranches").Submit 

ローカル]ウィンドウによると、すべてのJavascriptのイベントはNullです。両方のコード行はエラーなしで実行されますが、Webページは更新されません。私はここに何かを逃していますか

.Clickメソッドで画像要素をクリックしてみましたが、何もしません。

ウェブページはパスワードで保護されているため、URLを一般公開することはできません。

UPDATE:

ここでは、通常はその後、フォームを送信した手動でクリックされたタグ内のHTMLです。おそらくここには私が使うことができるものがありますか?

<img alt="View Quantities At Other Locations" src="/WebOrder/Images/CheckQtys.gif" 
title="View Quantities At Other Locations" class="popup" 
popupdirection="upperleft" popupwidth="380" 
popupcontent="#ProductQuantitiesForAccessibleBranches" 
onbeforepopupcreate="onBeforePopupCreate_GetProductQuantitiesForAccessibleBranches(this)" 
popupajaxformid="GetProductQuantitiesForAccessibleBranches" 
onbeforepopupajaxpost="onBeforePopupAjaxPost_GetProductQuantitiesForAccessibleBranches(this)" 
oncompletepopupajaxpost="onCompletePopupAjaxPost_GetProductQuantitiesForAccessibleBranches(this)" 
productguid="a12-545" 
displayitem="33902" 
brandguid="00000000-0000-0000-0000-000000000000" 
brandname="" brandsku=""> 
+0

クリックイベントに基づいてページ要素の値が変更されている場合は、すべてのJavaScriptイベントがnullではないと思います。 IEオブジェクトは何らかの理由でいくつかのイベントを表示していないかもしれませんが、そのJavaScriptを掘り下げることは、何が起こっているのかを理解するための鍵となります。たとえば、ページ上のスクリプト/イベントを自分で調べます。お気に入りのブラウザの開発コンソール。私はまた、ここにいくつかの専門家を得るためにjavascriptやdomタグを追加することを強く勧めます。 – Mikegrann

+0

ああ、ありがとう。私はChrome Devを使用して疲れましたが、私は何を見ているのか分かりません。ネットワークタブをクリックすると、イニシエータの列にスクリプトが表示されます。マウスオーバーすると、別のものが現れます。私はこの情報をどうしたらいいですか? – TheGuyOverThere

+0

値を設定するには、次のようにします。 'ie.Document.getElementById(" GetProductQuantitiesForAccessibleBranches ")。getElementsbyName(" ProductGuid ")(0).Value =どんなにうまくいくか –

答えて

3

実際にこのサイトを見ずに、このショットを「完全な」回答にすることはできません。ただし、フレーム/ iframeがないことを前提に正しい画像タグを見つけてください(何もないことを確認してください)。にしてください。

Public Sub Click_IMG_Tag() 
    Dim Elements As Object 
    Dim Element As Object 

    'Get a pointer to IE etc first, I'm assuming this is already done 

    Set Elements = IE.Document.getElementsByTagName("img") 

    For Each Element In Elements 
     On Error Resume Next ' used to bypass elements that don't have .Title property 
          ' later, you should error handle this exception 
     If Element.Title = "View Quantities At Other Locations" Then 
      Element.Focus 
      Element.Click 
      Element.FireEvent ("OnClick") 
      IELoad IE 
      Exit For 
     End If 
    Next 

End Sub 

Public Sub IELoad(Browser As Object) 
    While Browser.busy Or Browser.Readystate <> 4 
     Application.Wait (Now() + TimeValue("00:00:01")) 
     DoEvents 
    Wend 
End Sub 
+0

私は何か似たようなものに答えるつもりでした。かつて同じ問題があったので、すべてのボタンをループして特定のラベルが付いているものを確認してからクリックしなければなりませんでした。これは私にとって素晴らしい答えのようです。 IEとvbaの自動化は、とにかくお尻の痛みです。よくやった! – Mafii

+0

フィードバックいただきありがとうございます! –

+0

お試しいただきありがとうございます。私がこれを理解する手助けをするために多大な努力を惜しまなかったことはご存じですが、これもうまくいかないことにご注意ください。コードは正常に動作しますが、Webページは更新されません。私は文字通り完全にアイデアがありません。 – TheGuyOverThere

関連する問題