如何利用MSHTML获得网页中指定的Table,最好是通过Table的ID获得.
比如
<table ID ='SERVERLIST' >
<tr>
<td> a </td>
<td> b </td>
<td> b </td>
</tr>
</table>如何利用MSHTML获得这个Table,并增加或删除这个Table的行.
比如
<table ID ='SERVERLIST' >
<tr>
<td> a </td>
<td> b </td>
<td> b </td>
</tr>
</table>如何利用MSHTML获得这个Table,并增加或删除这个Table的行.
找是找到了,但不是vb的代码.看对你有没有帮助 。---------通过HTML中的MSHTML文档对象模型,前提目标表格要求有ID或名字。
你首先必须通过各种方法获得Internet Explorer浏览器(Mr Navigate,Sorry)窗口句柄,
判断它的类名是否是"Internet Explorer_Server",然后通过下述代码获得其文档对象模型指针,即IHTMLDocument2接口。 HWND hw;
MSHTML::IHTMLDocument2Ptr g_lpHTMLDocument2;
MSHTML::IHTMLElementCollectionPtr col;
MSHTML::IHTMLElementPtr EL;
DWORD lRes;
HRESULT hres;
UINT MSG = RegisterWindowMessage("WM_HTML_GETOBJECT");
SendMessageTimeout(hw, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, &lRes);
hres=ObjectFromLresult(lRes, __uuidof(MSHTML::IHTMLDocument2), 0, (void**)&g_lpHTMLDocument2);
得到所有HTML元素:
HRESULT hr = g_lpHTMLDocument2->get_all(&col);if(FAILED(hr)) return 0;
long len;
col->get_length(&len);
//get_length函数得到集合元素的数目,数目保存在len中,成功返回S_OK, 否则返回<0的值
DWORD dwRet = 0;
for(int i = 0; i < len; i++) //循环
{
//这里你就可以根据表格名称或ID来干正事了,其他不要再问我了,祝你好运!!
}---------
www.vicmiao.com
努力就有美好时光!
Dim table As MSHTML.IHTMLTable
Dim tr As MSHTML.IHTMLTableRow
Set table = WebBrowser1.Document.All("SERVERLIST")
Dim row As MSHTML.IHTMLTableRow
Dim cell As MSHTML.HTMLTableCell
For Each row In table.rows
For Each cell In row.cells
Debug.Print cell.innerText
Next
Debug.Print
Next
End SubPrivate Sub Form_Load()
WebBrowser1.Navigate "c:\test.html"
End Sub假设你的HTML保存在:c:\test.html下面,这个是读取table并且获得里面各个单元格内容的。
Dim table As MSHTML.IHTMLTable
Dim tr As MSHTML.IHTMLTableRow
Set table = WebBrowser1.Document.All("SERVERLIST")
Dim row As MSHTML.IHTMLTableRow
Dim cell As MSHTML.HTMLTableCell
For Each row In table.rows
For Each cell In row.cells
Debug.Print cell.innerText
Next
Debug.Print
Next
Dim rowNew As MSHTML.IHTMLTableRow
Set rowNew = table.insertRow
Dim cellNew As MSHTML.HTMLTableCell
Set cellNew = rowNew.insertCell()
cellNew.innerText = "New cell"
End SubPrivate Sub Form_Load()
WebBrowser1.Navigate "c:\test.html"
End Sub
Private WithEvents Doc As MSHTML.HTMLDocumentPrivate Sub Browser_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
Set Doc = Browser.Document '获取DOC
End SubPublic sub Command1_Click()
set table=Doc.getElementById ("SERVERLIST")
End Sub
楼上的办法无法获得 .
当Table在Frame下的时候,如何获得这个Table。
Dim eleTd As MSHTML.HTMLTable
Dim webdoc As HTMLDocument
Dim frawnd As HTMLWindow2
Set webdoc = WebBrowser1.Document
Set frawnd = webdoc.frames("joblist")
Set eleTd = frawnd.Document.getElementById("ABC")