VBA - scraping websites videos | Excel VBA Part 48 - Scraping Multiple Web Pages

Posted by Andrew Gould on 17 November 2016

PLEASE NOTE - The design of the website used in this video has changed since the video was recorded. This means that the code shown in the video no longer works. The downloadable file contains both the original version of the code and a version which works with the current version of the website. What's better than scraping one web page? Scraping lots of them with the same procedure, of couse! This video explains how to loop over multiple pages using Microsoft's HTML and XML object libraries. You'll learn about HTML tags and classes, the Document Object Model and how to loop over elements on a page.

See our full range of VBA training resources, or test your knowledge of VBA with one of our VBA skills assessment tests.

This video has the following accompanying files:

File name Type Description
OBSOLETE VERSION - Scraping Multiple Web Pages.xlsm Excel workbook with macros
REVISED 2018-08-21 -Scraping Multiple Web Pages.xlsm Excel workbook with macros

Click to download a zipped copy of the above files.

There are no exercises for this video.

Making a  video bigger

You can increase the size of your video to make it fill the screen like this:

View full screen

Play your video (the icons shown won't appear until you do), then click on the full screen icon which appears as shown at its bottom right-hand corner.


When you've finished viewing a video in full screen mode, just press the Esc key to return to normal view.

Improving the quality of a video

To improve the quality of a video, first click on the Settings icon:

Settings icon

Make sure you're playing your video so that the icons shown appear, then click on this gear icon at the bottom right-hand corner.


Choose to change the video quality:

Video quality

Click on Quality as shown to bring up the submenu.


The higher the number you choose, the better will be your video quality (but the slower the connection speed):

Connection speed

Don't choose the HD option unless you have a fast enough connection speed to support it!


Is your Wise Owl speaking too slowly (or too quickly)?  You can also use the Settings menu above to change your playback speed.

This page has 2 threads Add post
31 Mar 21 at 12:55

I wanted to get each pic url but the code is not executing. After a lot of research i coudn't find the reason.  Can you please let me know where i am going wrong?

Const WolVidURL As String = "https://www.coldwellbankerhomes.com/mi/baroda/agents/"

Sub GetVideoPage()

    Dim XMLReq As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    Dim VidCats As MSHTML.IHTMLElementCollection
    Dim VidCat As MSHTML.IHTMLElement
    Dim VidCatList As MSHTML.IHTMLElement
    Dim i As Integer
    XMLReq.Open "GET", WolVidURL, False
    If XMLReq.Status <> 200 Then
        MsgBox "Problem" & vbNewLine & XMLReq.Status & " - " & XMLReq.StatusText
        Exit Sub
    End If
    HTMLDoc.body.innerHTML = XMLReq.responseText
    Set VidCatList = HTMLDoc.getElementsByClassName("split-4 agent-team-results")(0)
    Set VidCats = VidCatList.getElementsByTagName("a")
         i = 2
    For Each VidCat In VidCats
        If VidCat.className = "image-wrap" Then
            Cells(i, 2) = VidCat.getAttribute("href")
            i = i + 1
        End If
    Next VidCat
End Sub

12 Dec 17 at 16:30

This is a very interesting and helpful video.  Thank you for making this information available to us.  

I have one problem at the outset.  I downloaded your associated file, but, when I try to run the GetVideoPage macro, I get a runtime error.  The code is 8007005, "access denied."  The file is not altered in any way.  This error appears at the line that reads "XMLReq.send".  I have tried the same macro using a different workbook and a different URL with the same result. 

I am using Excel 2016 and running it on W10 Pro 64bit.  

What, if anything, am I doing wrong?  

14 Dec 17 at 08:45

Hi, I'm almost certain that this is due to us upgrading the website to use https since the video was recorded.  If you alter the code so that the URL begins with https instead of just http I believe it will work. I hope that helps!

14 Dec 17 at 09:28

Thank you.  That solved the problem.  Everything works perfectly now.