返回列表 上一主題 發帖

[發問] 查找網站資料

依據EXCEL表中的名稱,利用IE開啟網頁進行查詢

大家好
我想請問要如何透過VBA
查詢以下網頁
http://tmsearch.tipo.gov.tw/TIPO_DR/GoodsIPO.html
我有一個EXCEL的表,裡面有一欄是商品名稱
想請問各位 要如何透過VBA將該欄的名稱依序打入網頁中查詢
並將查詢後的結果(網頁右方)回傳至EXCEL
PS, 我主要是要查詢我EXCEL中的名稱是否有出現在官網中

以上
再麻煩各位幫忙了
謝謝

TOP

s90068 您好
商品名稱例如下列
工業用酵素
工業用牛奶發酵劑
液晶
防腐劑
工業用除臭劑
工業用乾燥劑
中和劑
上述商品都可查到

在麻煩您了
謝謝您

TOP

[發問] 查找網站資料

各位好
我利用論壇中之前版大的代碼進行部分修改後
http://forum.twbts.com/viewthread.php?tid=9511
以試圖於下列網站中的左欄輸入特定字串例如"沙拉油"
http://tmsearch.tipo.gov.tw/TIPO_DR/GoodsIPO.html
然後進行查詢,並將查詢後右欄的表格貼回excel中
但是我的代碼卻無法順利輸入"沙拉油"
我的代碼如下
  1. Sub Ex()
  2.     Dim i As Integer, s As Integer, k As Integer, A, ii, j
  3.     Dim txtGoodsName As String, isnew As String, season As String
  4.     txtGoodsName = InputBox("請輸入 公司代號")
  5.        ' If Not IsNumeric(Val(txtGoodsName)) Or Len(txtGoodsName) <> 4 Then Exit Sub              '不是四位數的數字
  6.    ' isnew = InputBox("1:最新資料,2:歷史資料" & vbLf & "請選 1 , 2")
  7.    ' If isnew <> "1" And isnew <> "2" Then Exit Sub                              '沒選1 或 2
  8.    ' If isnew = "2" Then season = InputBox("輸入年度 , 季別" & vbLf & "例 101,01")
  9.                                     '第一季 01,第二季 02第三季 03,第四季 04.
  10.     With CreateObject("InternetExplorer.Application")
  11.         .Visible = True
  12.         .Navigate "http://tmsearch.tipo.gov.tw/TIPO_DR/GoodsIPO.html"
  13.                 Do While .Busy Or .ReadyState <> 4: DoEvents: Loop
  14.         With .document
  15.             For Each A In .getelementsbytagname("INPUT")
  16.                             If A.Name = "txtGoodsName" Then A.Value = txtGoodsName
  17.                        Next
  18.           '  For Each A In .getelementsbytagname("SELECT")
  19.            '     If A.Name = "isnew" Then
  20.           '          A.Value = True
  21.             '        If isnew = "2" Then
  22.              '           A.Focus
  23.               '          Application.Wait Now + #12:00:02 AM#
  24.                '         Application.SendKeys "{DOWN}"
  25.                 '        Application.Wait Now + #12:00:02 AM#
  26.                  '       Application.SendKeys "{ENTER}"
  27.                   '  End If
  28.                ' End If
  29.                 'If A.Name = "year" And isnew = "2" Then A.Value = Split(season, ",")(0)
  30.                ' If A.Name = "season" And isnew = "2" Then A.Value = Split(season, ",")(1)
  31.            ' Next
  32.                     For Each A In .getelementsbytagname("INPUT")
  33.                                'If Trim(A.Value) = "搜尋" And A.Name <> "rulesubmit" Then A.Click        '按下[搜索]鍵
  34.                        If Trim(A.Value) = "查詢" Then A.Click         '按下[搜索]鍵
  35.                     Next
  36.             End With
  37.         Application.Wait Now + #12:00:10 AM#                     '等待網頁下載資料
  38.         Set A = .document.getelementsbytagname("table")
  39.         On Error Resume Next       '***有些table沒Rows資料會產生錯誤 不理會它,程式繼續走
  40.         With ActiveSheet
  41.             .Cells.Clear
  42.            '************************
  43.            ' For ii = 0 To A.Length - 1        '不知道table範圍在何處: 從0開始
  44.            '******************************
  45.             For ii = 11 To A.Length - 1        ''從11開始 用 Debug.Print ii  找出所要資料的table範圍
  46.                 For i = 0 To A(ii).Rows.Length - 1      '寫入資料
  47.                 'Debug.Print ii  可找出所要資料的 table 範圍
  48.                 k = k + 1
  49.                 For j = 0 To 5
  50.                     Cells(k, j + 1) = A(ii).Rows(i).Cells(j).innerText
  51.                 Next
  52.             Next
  53.             Next
  54.             .Range("C5").Cut Range("D5")
  55.             With .Range("B5:C5,D5:E5")
  56.                 .HorizontalAlignment = xlCenter
  57.                 .VerticalAlignment = xlCenter
  58.                 .Merge
  59.             End With
  60.         End With
  61.        '.Quit        '關閉網頁
  62.     End With
  63. End Sub
複製代碼
想請各位幫忙看看
謝謝~

各位好
我利用下列程式 貌似可將值send 到網站上,但是我不知道該如何把網站的資料抓回來
不知道是否有人能幫我看看
  1. Sub jdj()
  2. Dim xmlhttp As Object
  3. Set xmlhttp = CreateObject("msxml2.xmlhttp.3.0")
  4. xmlhttp.Open "post", " http://tmsearch.tipo.gov.tw/TIPO_DR/servlet/InitGoodsIPOResult", False
  5. xmlhttp.send " txtGoodsName=%A8F%A9%D4&txtGoodsID=&hdnGoodsNameLabel=%B0%D3%AB%7E%28%AAA%B0%C8%29%A6W%BA%D9&hdnGoodsIDLabel=%B0%D3%AB%7E%28%AAA%B0%C8%29%B2%D5%B8s%A5N%BDX"
  6. If xmlhttp.readystate = 4 Then
  7. MsgBox "done"
  8. end if
  9. end sub
複製代碼
謝謝

TOP

GBKEE 您好
我在win 7 excel 2010 下執行時
出現執行階段錯誤438
偵錯指向下列程式碼
Set D = .document.LastChild.LastChild.all(1).contentWindow.frames.document.getElementsByTagName("table")
想請問您這要怎麼解決
ps 我另外在win xp excel2003中測試成功

再請您幫忙
謝謝您

TOP

GBKEE 您好
真的很謝謝您
另外
想請問您 有些查詢資料(例如查詢"電腦")會有下一頁的問題
想請教您 此種狀況該如何解決
謝謝您

TOP

謝謝兩位的分享與教導~

TOP

        靜思自在 : 多做多得。少做多失。
返回列表 上一主題