将表格数据从网页复制到Excel工作表

时间:2014-12-17 07:27:56

标签: html excel vba import-table

我正在使用excel宏从在线Intranet网站计算网站复制计算结果数据。

对于该计算,我必须向网页添加许多数据。我使用宏来自动将数据输入到网页,最后我可以访问结果页面。计算结果以表格形式显示。现在我想以表格形式将结果数据复制到excel表。 我尝试过网页查询,但由于地址不能直接加载网页,因此无法正常工作。

以下是我要提取的html表的来源。



 
      <P>
        <BR>
        <TABLE width="80%">
          <TR>
            <TD bgcolor="#ffffff" align="center"><b>Life Calculation Result</b>
            </TD>
          </TR>
        </TABLE>
        <P>
          <TABLE cellspacing="1" cellpadding="0">
            <TR align="center">
              <TH colspan="6"></TH>
              <TH colspan="3" align="center">--- Inboard ---</TH>
              <TH></TH>
              <TH colspan="3" align="center">--- outboard ---</TH>
              <TH></TH>
              <TH colspan="3" align="center">--- System ---</TH>
            </TR>
            <TR align="center">
              <TH>No.</TH>
              <TH width="10"></TH>
              <TH>Displacement</TH>
              <TH width="10"></TH>
              <TH>Preload</TH>
              <TH width="10"></TH>
              <TH>Running
                <BR>Distance</TH>
              <TH width="10"></TH>
              <TH>Total
                <BR>Number of
                <BR>Revolutions</TH>
              <TH width="10"></TH>
              <TH>Running
                <BR>Distance</TH>
              <TH width="10"></TH>
              <TH>Total
                <BR>Number of
                <BR>Revolutions</TH>
              <TH width="10"></TH>
              <TH>Running
                <BR>Distance</TH>
              <TH width="10"></TH>
              <TH>Total
                <BR>Number of
                <BR>Revolutions</TH>
            </TR>
            <TR align="center">
              <TH></TH>
              <TH></TH>
              <TH>[mm]</TH>
              <TH></TH>
              <TH>[N]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">4<font></sup>km]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">6<font></sup>rev.]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">4<font></sup>km]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">6<font></sup>rev.]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">4<font></sup>km]</TH>
              <TH></TH>
              <TH>[10<sup><font size="-1">6<font></sup>rev.]</TH>
            </TR>
            <TR align="right">
              <TH>(1)</TH>
              <TD></TD>
              <TD>0.594874</TD>
              <TD></TD>
              <TD></TD>
              <TD></TD>
              <TD>3.492e+004</TD>
              <TD></TD>
              <TD>1.705e+005</TD>
              <TD></TD>
              <TD>9.796e+004</TD>
              <TD></TD>
              <TD>4.782e+005</TD>
              <TD></TD>
              <TD>2.710e+004</TD>
              <TD></TD>
              <TD>1.323e+005</TD>
            </TR>
            <TR align="right">
              <TH>(2)</TH>
              <TD></TD>
              <TD>0.604874</TD>
              <TD></TD>
              <TD></TD>
              <TD></TD>
              <TD>4.001e+004</TD>
              <TD></TD>
              <TD>1.953e+005</TD>
              <TD></TD>
              <TD>1.033e+005</TD>
              <TD></TD>
              <TD>5.045e+005</TD>
              <TD></TD>
              <TD>3.042e+004</TD>
              <TD></TD>
              <TD>1.485e+005</TD>
            </TR>
            <TR align="right">
              <TH>(3)</TH>
              <TD></TD>
              <TD>0.614874</TD>
              <TD></TD>
              <TD>0.00</TD>
              <TD></TD>
              <TD>4.751e+004</TD>
              <TD></TD>
              <TD>2.320e+005</TD>
              <TD></TD>
              <TD>1.088e+005</TD>
              <TD></TD>
              <TD>5.314e+005</TD>
              <TD></TD>
              <TD>3.495e+004</TD>
              <TD></TD>
              <TD>1.706e+005</TD>
            </TR>
            <TR align="right">
              <TH>(4)</TH>
              <TD></TD>
              <TD>0.630867</TD>
              <TD></TD>
              <TD>1000.00</TD>
              <TD></TD>
              <TD>3.003e+004</TD>
              <TD></TD>
              <TD>1.466e+005</TD>
              <TD></TD>
              <TD>3.941e+004</TD>
              <TD></TD>
              <TD>1.924e+005</TD>
              <TD></TD>
              <TD>1.813e+004</TD>
              <TD></TD>
              <TD>8.854e+004</TD>
            </TR>
            <TR align="right">
              <TH>(5)</TH>
              <TD></TD>
              <TD>0.639982</TD>
              <TD></TD>
              <TD>2000.00</TD>
              <TD></TD>
              <TD>7.425e+003</TD>
              <TD></TD>
              <TD>3.625e+004</TD>
              <TD></TD>
              <TD>7.893e+003</TD>
              <TD></TD>
              <TD>3.853e+004</TD>
              <TD></TD>
              <TD>4.075e+003</TD>
              <TD></TD>
              <TD>1.989e+004</TD>
            </TR>
            <TR align="right">
              <TH>(6)</TH>
              <TD></TD>
              <TD>0.647481</TD>
              <TD></TD>
              <TD>3000.00</TD>
              <TD></TD>
              <TD>2.523e+003</TD>
              <TD></TD>
              <TD>1.232e+004</TD>
              <TD></TD>
              <TD>2.592e+003</TD>
              <TD></TD>
              <TD>1.266e+004</TD>
              <TD></TD>
              <TD>1.362e+003</TD>
              <TD></TD>
              <TD>6.648e+003</TD>
            </TR>
            <TR align="right">
              <TH>(7)</TH>
              <TD></TD>
              <TD>0.654070</TD>
              <TD></TD>
              <TD>4000.00</TD>
              <TD></TD>
              <TD>1.131e+003</TD>
              <TD></TD>
              <TD>5.521e+003</TD>
              <TD></TD>
              <TD>1.148e+003</TD>
              <TD></TD>
              <TD>5.605e+003</TD>
              <TD></TD>
              <TD>6.068e+002</TD>
              <TD></TD>
              <TD>2.962e+003</TD>
            </TR>
            <TR align="right">
              <TH>(8)</TH>
              <TD></TD>
              <TD>0.660043</TD>
              <TD></TD>
              <TD>5000.00</TD>
              <TD></TD>
              <TD>6.007e+002</TD>
              <TD></TD>
              <TD>2.933e+003</TD>
              <TD></TD>
              <TD>6.065e+002</TD>
              <TD></TD>
              <TD>2.961e+003</TD>
              <TD></TD>
              <TD>3.214e+002</TD>
              <TD></TD>
              <TD>1.569e+003</TD>
            </TR>
            <TR align="right">
              <TH>(9)</TH>
              <TD></TD>
              <TD>0.665559</TD>
              <TD></TD>
              <TD>6000.00</TD>
              <TD></TD>
              <TD>3.570e+002</TD>
              <TD></TD>
              <TD>1.743e+003</TD>
              <TD></TD>
              <TD>3.593e+002</TD>
              <TD></TD>
              <TD>1.754e+003</TD>
              <TD></TD>
              <TD>1.907e+002</TD>
              <TD></TD>
              <TD>9.311e+002</TD>
            </TR>
            <TR align="right">
              <TH>(10)</TH>
              <TD></TD>
              <TD>0.670717</TD>
              <TD></TD>
              <TD>7000.00</TD>
              <TD></TD>
              <TD>2.296e+002</TD>
              <TD></TD>
              <TD>1.121e+003</TD>
              <TD></TD>
              <TD>2.307e+002</TD>
              <TD></TD>
              <TD>1.126e+003</TD>
              <TD></TD>
              <TD>1.226e+002</TD>
              <TD></TD>
              <TD>5.983e+002</TD>
            </TR>
            <TR align="right">
              <TH>(11)</TH>
              <TD></TD>
              <TD>0.675584</TD>
              <TD></TD>
              <TD>8000.00</TD>
              <TD></TD>
              <TD>1.566e+002</TD>
              <TD></TD>
              <TD>7.646e+002</TD>
              <TD></TD>
              <TD>1.571e+002</TD>
              <TD></TD>
              <TD>7.671e+002</TD>
              <TD></TD>
              <TD>8.354e+001</TD>
              <TD></TD>
              <TD>4.078e+002</TD>
            </TR>
            <TR align="right">
              <TH>(12)</TH>
              <TD></TD>
              <TD>0.680208</TD>
              <TD></TD>
              <TD>9000.00</TD>
              <TD></TD>
              <TD>1.117e+002</TD>
              <TD></TD>
              <TD>5.455e+002</TD>
              <TD></TD>
              <TD>1.120e+002</TD>
              <TD></TD>
              <TD>5.469e+002</TD>
              <TD></TD>
              <TD>5.958e+001</TD>
              <TD></TD>
              <TD>2.909e+002</TD>
            </TR>
            <TR align="right">
              <TH>(13)</TH>
              <TD></TD>
              <TD>0.684622</TD>
              <TD></TD>
              <TD>10000.00</TD>
              <TD></TD>
              <TD>8.262e+001</TD>
              <TD></TD>
              <TD>4.034e+002</TD>
              <TD></TD>
              <TD>8.278e+001</TD>
              <TD></TD>
              <TD>4.042e+002</TD>
              <TD></TD>
              <TD>4.404e+001</TD>
              <TD></TD>
              <TD>2.150e+002</TD>
            </TR>
          </TABLE>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:0)

复制您的代码
<table> ... </table>

标签

然后切换到Excel,选择一个单元格并按Command-v或使用Edit&gt;糊。 Excel知道HTML表格,并且会恰好格式化表格。

答案 1 :(得分:0)

没有网址就是猜测。

您可以使用Internet Explorer浏览器获取所有TABLE标记元素,

IE.document.getElementsByTagName("TABLE")

然后按索引选择特定的表格;让我们说索引0,即集合中的第一个表。

IE.document.getElementsByTagName("TABLE")(0)

如果您添加了参考(VBE&gt;工具&gt;参考&gt; Microsoft Internet控件和HTML对象库),您可以将此表放入HTMLTable对象变量中:

Dim nTable As HTMLTable
Set nTable = IE.document.getElementByTagName("TABLE")(0)

然后,您可以在表格中选择tr标签,以获取表格行

nTable.getElementsByTagName("tr")

并且在每一行中,您可以通过td标记或沿行长度循环其单元格:

nTable.getElementsByTagName("tr")(i).getElementsByTagName("td")

其中i是前一步中行集合的循环的当前索引。

循环表格单元格(由td标签获取的内部循环项目时),然后您可以访问其.innerText属性以获取值。

外部循环行(tr标记)中包含的内容示例:

Rows

表格单元格中单个行(td标记)内的内容示例:

Example cells within a row

因此,当您对行进行外部循环,然后对单元格进行内部循环时,您将获得上图中显示的值。

完整地完成此操作的示例,请记住根据每个网页,您必须稍微调整循环:https://stackoverflow.com/a/50888649/6241235