標題:
[發問]
如何用VBA,透過Excel在網頁上控制勾選?
[打印本頁]
作者:
espionage
時間:
2015-9-17 16:07
標題:
如何用VBA,透過Excel在網頁上控制勾選?
:) Hi 各位先進
想請教一個問題,就是在網頁上,有一個打勾的方框,如下圖紅框的地方,如果我想用VBA程式語言控制,比方我在Excel A1文字顯示 "項次",在A2 欄位來判定是否為"Y",假使A2為Y,網頁上項次的框框內就打勾,這好像跟checked有關,因為我發現沒有被打勾的選項,value那一串字之後的 checked 不會顯示
謝謝指教
------被勾選的框 "項次" 網頁原始檔
<td width="26%" align="left" bgcolor="#EEEEEE" class='t8_blue4'>
<INPUT type="checkbox" name="displayAttribute" id="displayAttribute1" value="SequenceNo"
checked
>
項次
</td>
------沒被勾選的框 "用量(*) 網頁原始檔
<td width="26%" align="left" bgcolor="#EEEEEE" class='t8_blue4'>
<INPUT type="checkbox" name="displayAttribute" id="displayAttribute5" value="QuantityStar" >
用量(*)
</td>
[attach]22020[/attach]
作者:
GBKEE
時間:
2015-9-18 10:32
回復
1#
espionage
試試看
Option Explicit
Sub Ex()
Dim E As Object
With CreateObject("InternetExplorer.Application")
.Visible = True
.Navigate "D:\A.HTM" '修正為你的網頁
Do While .Busy Or .readyState <> 4: DoEvents: Loop
'<INPUT type="checkbox" name="displayAttribute" id="displayAttribute1" value="SequenceNo">
'<INPUT type="checkbox" name="displayAttribute" id="displayAttribute5" value="QuantityStar" >
With .Document '
'TagName= "INPUT", 不是唯一的
'For Each E In .all.tags("input") '=>.getElementsByTagName("INPUT")
' If E.Value = "SequenceNo" Then E.Checked = [A2] = "Y"
' If E.Value = "QuantityStar" Then E.Checked = [B2] = "Y"
'Next
'name="displayAttribute"不是唯一的
'For Each E In .all("displayAttribute") '=>.getElementsByName("displayAttribute")
' If E.Value = "SequenceNo" Then E.Checked = [A2] = "Y"
' If E.Value = "QuantityStar" Then E.Checked = [B2] = "Y"
'Next
'id="displayAttribute1",id="displayAttribute5"
'id 是唯一的
'勾選的框 "項次"
.getElementByID("displayAttribute1").Checked = [A2] = "Y"
'勾選的框 "用量(*)"
.getElementByID("displayAttribute5").Checked = [B2] = "Y"
End With
'.Quit '關閉網頁
End With
End Sub
複製代碼
作者:
espionage
時間:
2015-9-21 12:48
GBKEE 大大
我好像讓您誤會了,我的想法是,如果在Excel上的某個欄位標示"Y",可以控制Web上欄位上的選項是否打勾
比方Excel我在B3欄放入Y,則此網頁在 "選項" 的這個方框內,就會被打勾
不過VBA報錯,說沒這個語法,我應該怎個改比較好呢?
'-----欄位項次選項
For Each A In .getelementbyid("displayAttribute1")
If Sheets(1).Cells(3, 3) = "Y" Then A.Checked '如果Excel B3顯示 Y,則把網頁 "項次" 選項打勾
Next
作者:
espionage
時間:
2015-9-21 14:08
大大
謝謝前面的指導,我剛試出來了
'If Sheets(1).Cells(3, 2) = "Y" Then ' ---->這句判斷if,是多的,應該刪除
只要留 .getelementbyid("displayAttribute7").Checked = Sheets(1).Cells(3, 2) 就好了
如果B3欄位有內容,選項就會勾起來了,如果B3欄位無內容,選項就不會勾起來了
感謝
'-----欄位項次選項---------
'If Sheets(1).Cells(3, 2) = "Y" Then ' 這句是多的,應該刪除
.getelementbyid("displayAttribute7").Checked = Sheets(1).Cells(3, 2) '如果Excel B3顯示 Y,則把網頁 "項次" 選項打勾
作者:
GBKEE
時間:
2015-9-21 15:02
本帖最後由 GBKEE 於 2015-9-22 05:45 編輯
回復
4#
espionage
我好像讓您誤會了,我的想法是
好像沒有誤會.
我有說到
'id="displayAttribute1",id="displayAttribute5"
'id 是唯一的沒有子物件
所以 For Each A In .getelementbyid("displayAttribute1") 程式傳回錯誤
複製代碼
要改為
Set A = .getelementbyid("displayAttribute1")
If Sheets(1).Cells(3, 3) = "Y" Then A.Checked = True
複製代碼
簡化
.getelementbyid("displayAttribute1").Checked = [A2] = "Y"
複製代碼
作者:
espionage
時間:
2015-9-29 10:45
GBKEE大大
謝謝您,可以使用
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)