2015-11-23 348 views
1

我得到一個運行時錯誤「438」試圖通過VBA點擊一個PHP的網站按鈕時(對象不支持此屬性或方法「),我一直在google搜索過去的幾個小時,無法找到解決辦法。VBA提交按鈕點擊

這下面的代碼全部都在我需要它,但無法找到如何按一下按鈕沒有它失敗了,試過如下:

IE.Document.getElementsByName("Calculate").Click 
IE.Document.getElementsByID 
IE.Document.getElementsByClassName 

等全部失敗。

如我看到按鈕的代碼如下:

<button onclick="calculate();" class="btn btn-primary">Calculate</button> 

因此,使用ByClassName當我用BTN BTN-初級和由名稱I用於計算。我現在失去了我的想法大聲笑,任何想法?代碼如下:

p.s使用IE11如果重要。

Sub testWeb() 
    Dim sht As Worksheet 
    Dim IE As Object 

    Dim Item As Variant 
    Dim objElement As Object 

    Set sht = ActiveSheet 
    Set IE = CreateObject("InternetExplorer.Application") 
    'Open IE 
    IE.Visible = True 
    IE.Navigate "http://www.doogal.co.uk/DrivingDistances.php" 

    'Wait until site is loaded 
    Do While IE.ReadyState <> 4 'READYSTATE_COMPLETE 
     DoEvents 
    Loop 


    IE.Document.getElementById("startLocs").Value = "TEST" 
    IE.Document.getElementById("endLocs").Value = "TEST1" 
    IE.Document.getElementsByName("Calculate").Click 

    IE.Document.forms(1).submit  


End Sub 
+1

是否有一個特定的原因,你在網站上使用VBS?因爲如果沒有,請不要..轉到JavaScript。 VBS就像JS那個沒有人喜歡的邪惡小矮人兄弟。 –

+0

它是一個知識差距tbh朋友:),我需要在Excel中的信息,所以我正在使用我知道把這些數據。 – JamieB

+1

不知道Rob如何計算這是VBS ......你會認爲對VBA的幾個引用會區分這一點。也許VBA和VBS是JS傢伙的可互換條款。 :)無論如何,我只是爲了抵制-1,以防萬一來自沒有閱讀的人。 – Tim

回答

1

您有2個問題發佈代碼。

  1. .getElementsByName方法返回一組元素。你將不得不找出哪個項目是你想要點擊的元素。所以,你的代碼應該是這樣的:

    IE.Document.getElementsByName("Calculate").Item(5).Click

  2. 如果您發佈的HTML是從實際的網站,那麼<BUTTON>沒有name屬性,所以它不會是元素的集合由getElementsByName返回。

您可能需要研究一種用於查找DOM元素的不同方法。 IDK多少按鈕的形式,也不知道是什麼類被分配給每個按鈕,但也許你可以getElementsByTagName然後依次通過各item查看其.class財產,或者你可以getElementsByClassName,並通過該集合,直到找到一個元素循環.type按鈕。

+0

繁榮,你是一個傳奇:)。這是我需要的ByClassName和.Item(0).click而不是點擊。熱潮:) – JamieB