標題:
[發問]
代碼應該如何修正, 才能將日期填到網頁中?
[打印本頁]
作者:
justintoolbox
時間:
2015-9-8 11:38
標題:
代碼應該如何修正, 才能將日期填到網頁中?
各位前輩們大家好,
因不擅於網頁操控,目前遇到問題如下:
利用底下的方法無法將我想要的數值(例如年103)帶入網頁中.
代碼應該如何修正就能克服這問題?
感謝各位前輩們指導.
Sub Ex()
Dim my_url, B
my_url = "http://mops.twse.com.tw/server-java/t13sa150_otc?step=0"
With CreateObject("InternetExplorer.Application")
.Visible = True
.navigate my_url
Do While .Busy Or .readyState <> 4: DoEvents: Loop
For Each B In .document.getElementsByTagName("SELECT")
If B.Name = "years" Then B.Value = 103
Next
End With
End Sub
複製代碼
作者:
GBKEE
時間:
2015-9-9 10:38
回復
1#
justintoolbox
試試看
Option Explicit
Sub 網頁_contentWindow()
Dim my_url As String, xDate As String, E As Object, b As Object, i As Integer, R As Integer
my_url = "http://mops.twse.com.tw/server-java/t13sa150_otc?step=0"
With CreateObject("InternetExplorer.Application")
' .Visible = True
.Navigate my_url
Do While .Busy Or .readyState <> 4: DoEvents: Loop
Set E = .Document.ALL(4).contentWindow.Document '這網頁輸入元素在這裡
Set b = E.getElementsByTagName("SELECT")
my_url = ""
For i = 1 To b("bcode").Length
my_url = my_url & " " & i & b("bcode")(i - 1).innerText & vbLf
'讀取分類項目的內容
Next
Do
i = Val(InputBox(my_url, , 1)) '分類項目的選擇
If i = 0 Then
If MsgBox("分類項目 沒有選擇" & vbLf & "離開 程式?", vbYesNo) = vbYes Then
GoTo Exx
End If
End If
Loop Until i > 0 And i <= b("bcode").Length
Do
xDate = Application.InputBox(Date, "請輸入日期", Date) '資料日期 輸入
If Not IsDate(xDate) Then
If MsgBox("資料日期 輸入錯誤" & vbLf & "離開 程式?", vbYesNo) = vbYes Then
GoTo Exx
End If
End If
Loop Until IsDate(xDate)
xDate = CDate(xDate) '轉為日期型態
b("bcode").selectedIndex = i - 1 '分類項目
b("years").selectedIndex = Year(Date) - Year(xDate) '年度
b("months").selectedIndex = Month(xDate) - 1 '月份
b("days").selectedIndex = Day(xDate) - 1 '日期
For Each b In E.getElementsByTagName("INPUT")
If b.Type = "submit" Then b.Click
Next
Do While .Busy Or .readyState <> 4: DoEvents: Loop
'**** 作法1
' Set E = .Document.ALL(5).contentWindow.Document '這網頁查詢資料在這裡
'Set E = E.getElementsByTagName("table")(0)
'Ep E.outerHTML '網頁資料文字
'******************
'**** 作法2
Set E = .Document.ALL(5).contentWindow.Document '這網頁查詢資料在這裡
Set E = E.getElementsByTagName("table")(0).Rows
With Sheets(2)
.UsedRange.Clear
For Each b In E
For i = 0 To b.Cells.Length - 1
.Cells(R + 1, i + 1) = b.Cells(i).innerText
Next
R = R + 1
Next
End With
Exx:
.Quit
End With
MsgBox "ok"
End Sub
Sub Ep(S As String)
With CreateObject("InternetExplorer.Application")
.Navigate "about:Tabs"
' .Visible = True
.Document.body.innerHTML = S
.ExecWB 17, 2 ' Select All
.ExecWB 12, 2 ' Copy selection
With Sheets(1)
.UsedRange.Clear
.Range("A1").Select
.PasteSpecial Format:="HTML", Link:=False, DisplayAsIcon:=False, NoHTMLFormatting:=True
End With
.Quit
End With
End Sub
複製代碼
作者:
justintoolbox
時間:
2015-9-9 15:35
回復 justintoolbox
試試看
GBKEE 發表於 2015-9-9 10:38
非常感謝GBKEE挺力幫忙!太感謝.
剛剛立刻測試...
只是....出了問題如下:
[attach]21934[/attach]
[attach]21935[/attach]
我的系統是
Win8.1 64bit
EXCEL 2010 64bit
IE11
會不會是64bit關係所致?
懇請GBKEE版主指導~感謝。
作者:
justintoolbox
時間:
2015-9-9 20:15
回復
3#
justintoolbox
GBKEE大,
問題解決了,參考先前的文章(
http://forum.twbts.com/viewthrea ... p;extra=&page=1
)
瞭解一些概念後
自行把 Set E = .Document.ALL(4).contentWindow.Document改成 Set E = .Document.ALL(3).contentWindow.Document
就可以了!
太感謝 超級版主 GBKEE, 感恩!
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)