Home » excel » Read from html and write to Excel

Read from html and write to Excel

Posted by: admin May 14, 2020 Leave a comment


I want read html and write few columns from it into an Excel table.I am currently using a macro to do it, but need it in VBScript.

I want to count the number of fail occurrences for compliance check and oracle table and write it into an Excel doc.

Full size image of sample html and desired Excel file result.

Sample html and desired excel output

How to&Answers:

Excel can be controlled from VBScript like this:

Set xl = CreateObject("Excel.Application")
xl.Visible = True

Set wb = xl.Workbooks.Add

The HTML file could be parsed into a DOM document:

Set doc = CreateObject("Msxml2.DOMDocument.6.0")
doc.async = True
doc.load "C:\path\to\your.html"

Use an XPath expression to select al <td> elements:

Set td = doc.selectNodes("//tr/td")

At this point td contains a collection of all <td> elements in the document. You can process them like this:

numrows = doc.selectNodes("//tr").Length
numcols = td.Length / numrows

row = 0
For i = 0 To td.Length - 1 Step numcols
  If td(i).Text = "Fail" Then
    row = row + 1
    wb.Sheets(1).Cells(row, 1).Value = CDate(Split(td(i+2).Text)(0))
    If InStr(td(i+1).Text, "compliance") > 0 Then
      wb.Sheets(1).Cells(row, 2).Value = 1
    ElseIf InStr(td(i+1).Text, "Oracletable") > 0 Then
      wb.Sheets(1).Cells(row, 3).Value = 1
    End If
  End If

The above will create a table like this:

2/9/2012    1    
2/9/2012         1
2/9/2012         1

You can then use Excel’s Consolidate method to consolidate the data:

Const xlSum = -4157

wb.Sheets(2).Range("A1").Consolidate _
  Array(wb.Sheets(1).Name & "!R1C1:R" & row & "C3"), xlSum


You can use any dom library to read in the html and the OpenXML sdk to write out to Excel (2007 format – xlsx). Does that answer your question or do you have something specific you are struggling with?


Sorry, I thought for some reason you were talking about doing it in VB.Net, now I realize you are already in Excel. So I’m not clear on what you are asking – how to open the html file? how to calculate or store the values?

Perhaps post the script you have so far and be specific on what is not working.