2013-04-30 108 views
0

我正在使用的網頁上有60到100個菜單鏈接,具體取決於用戶憑據。我用這個代碼,點擊菜單鏈接:Excel VBA查找網頁鏈接ID

Set oapp = CreateObject("Shell.Application") 
     For i = 0 To 25 
     StrName = "" 
     On Error Resume Next 
     StrName = oapp.Windows(i).Document.URL 
     If InStr(StrName, "mywebaddress.aspx") Then 
     Set oie = oapp.Windows(i) 
     Exit For 
     End If 
     Next 
     oie.Document.all("ctl11_repeaterNavigator_ctl32_menuLink").Click 

,而是根據用戶憑據的鏈接數量的變化 - 與我的憑據_ctl32可以在別人_ctl32或_ctl33。有沒有辦法搜索內部文本並將鏈接ID存儲爲字符串?

I know I can click on the link by using: 
For i = 1 To oie.Document.all.Length 
If oie.Document.all.Item(i).innerText = "Letters" Then 
oie.Document.all.Item(i).Click 
Exit For 
End If 
Next i 

,但我需要一個字符串中的鏈接ID店下一步

+0

「oie.Document」中的每個元素都有一個'innerHTML'和'innerText'屬性你知道菜單鏈接的'TagName'嗎?或「名稱」? – 2013-04-30 18:27:57

+0

@DavidZemens字母 – user2336998 2013-04-30 18:35:46

+0

你有沒有機會嘗試我的建議? – 2013-05-05 02:46:59

回答

0

也許嘗試這樣的事情,假設鏈接的Name是「字母」,並假定前綴「ctl11_repeaterNavigator_」和足夠的「_menuLink」不會爲用戶改變。

Dim ele as Variant 
Dim parseString as String 

'## Determine what ctl to use:' 

For each ele in oie.Document.GetElementsByName("Letters") '## Modify to use the Name associated with this menu link ' 
    If Right(ele.InnerHTML,9) = "_menuLink" AND _ 
     Left(ele.InnerHTML, 24) = "ctl11_repeaterNavigator_" Then 
     ele.Click 
     Exit For 
    End If 
Next 

可能需要使用的ele.InnerText代替.InnerHTML因此,如果上述方法無效,請嘗試調整它一下。