excel中vba是否能夠將數據填充到網頁中?

我需要在一個網頁中填寫一些數據,每次只能填寫三十個,填寫完一個數據後按tab鍵到下一格填寫下一格數據。填滿三十個後需要點擊網頁上的next鍵到下一頁繼續填寫,直到所有數據填寫完成後點擊提交。所有數據的源都來自於一個excel文件。能否實現我點一下,三十個數據依次填完,我自己點下一頁,然後再點一下,下三十個數據再自動填上,一直到所有數據都填完?


可以,只能用IE實現,引用Microsoft Internet Controls就可以在VBA里操作網頁上的內容了。

Dim mShellwindows As New ShellWindows
Dim IE As InternetExplorer

For Each IE In mShellwindows 搜索頁面
If IE.LocationURL = [URL] Then Exit For
Next

With IE.Document 在文本框填寫內容
.all("[id_or_name]").Value = Sheet1.Cells(1, 1).Value
End With

基本原理如上面的代碼所示。

[URL]是你要填數據的頁面,先用IE瀏覽器打開這個頁面。

[id_or_name]是你要往裡填數據的控制項id或名字,這個需要事先從頁面里抓取到。

至於其他個性化的自定義內容就需要你自己寫了~如果不會再貼圖追問吧!

順便

Sub getPageInfo()
With CreateObject("internetexplorer.application")
.Visible = True
.Navigate [URL]

While .ReadyState &<&> 4 Or .Busy
DoEvents
Wend
Set dmt = .Document
For i = 0 To dmt.all.Length - 1
Set htMent = dmt.all(i)
With ActiveSheet
.Cells(i + 2, "A") = htMent.tagName
.Cells(i + 2, "B") = TypeName(htMent)
.Cells(i + 2, "C") = htMent.ID
.Cells(i + 2, "D") = htMent.Name
.Cells(i + 2, "E") = htMent.Value
.Cells(i + 2, "F") = htMent.Text
.Cells(i + 2, "G") = htMent.innerText
End With
Next i
Set r = Nothing
.Quit
End With
MsgBox "獲取頁面信息成功!"
End Sub

這個是抓取頁面內容的代碼...如果要登錄的話也要先打開頁面。


可以考慮換種思路:寫個VBA程序,讀取三十個數據,然後發送一個post請求到web server。

從Excel自動填充數據到網頁似乎不太容易。

* How can I send an HTTP POST request to a server from Excel using VBA?

http://stackoverflow.com/questions/158633/how-can-i-send-an-http-post-request-to-a-server-from-excel-using-vba


我正在做的一個項目正是採用vba的方式向web頁面提交數據的,沒有什麼難度。


可以,甚至完全自動都可以。取決於網頁複雜程度和你願意付出的價格。你可以去excelhome論壇碰碰運氣,也許有高人願意免費幫你弄。或者去威客網站發布任務,要花錢的。


方法一vb+webbrowser ,dom讀寫數據

方法二vba+xmlhttp.dll,用post或get方法發數據


用按鍵精靈或者vba操作winhttp、ie之類的都行


推薦閱讀:

Excel 2013 有哪些不錯的實用應用程序值得推薦?
Excel如何將兩個表,根據有相同數據的一列數據,自動填寫到另外一張表?
EXCEL突然有一天打開之後,所有的格式默認設置都變成了日期。如何將默認單元格格式修改成常規?
有哪些免費非常好用的excel插件值得下載使用?
為什麼excel不能正確處理utf8 csv?

TAG:MicrosoftExcel | VBA |