Microsoft Internet Controls Vba Library Mac

There are set of built in libraries available in excel, few of them are default to your code and rest are optional to be added. These libraries contain various built in methods, objects and properties for these methods and objects. These libraries act same as namespaces in .Net, packages in Java

Below are the steps for adding reference libraries to y

I am trying to scrape data from the web using vba and I need to add Microsoft Internet controls library to my references but have limitied options available. Do I have the wrong version of excel? You can see by the scroll bar in the screen shot that I have very few available references to choose from. Microsoft Excel xx.x Object Library; OLE Automation; Microsoft Office xx.x Object Library; VBA default reference libraries. Scroll down a tick these 2 web-related References: Microsoft HTML Ojbect Library; Microsoft Internet Controls; Add MS HTML Object Library, MS Internet Controls. Resulting in VBA – Needed references for building web bots.

our Excel workbook

  1. Open Excel workbook and press Alt + F11 to get Visual Basic Editor (VBE)
  2. Go to the Tools menu and select References from the drop down menu.
  3. References- VBAProject” dialog will appear.

As you can see the list of available references and check box for each reference and you will notice that few check boxes are already checked so these are the default libraries which are already added to you excel.

You can select the check box for any of the library you want to add in your excel and click OK button from the right and you will be able to use the methods and objects which resides in that library.

If you try to use the object for which the necessary library is missing then you will end up getting error

Example:

For using MSForms.DataObject in your code you need library “Microsoft Forms 2.0 Object Library

Sometimes you won’t find the desired references in the list, say you won’t find “Microsoft Forms 2.0 Object Library” in the tool/reference list in that case you need to browse the FM20.DLL file from the system32

Once you add the FM20.DLL, you can see the Microsoft Forms 2.0 Object Library” is added to the reference list

I've shamelessly stolen my colleague Andrew's idea to create this blog, showing how to fill in an Internet Explorer (IE) form from within VBA. I've also shamelessly borrowed ideas from Fergus Cairns - thanks, Fergus.

We'll create a macro in VBA to fill in the search form on the old Wise Owl site (now superseded, but the principle remains the same).

Library

Note that our website has changed since this blog was written, so while the principle of the code shown below is still good, it won't work on our site. I've published a newer blog on the same subject here - or you can see a full list of all of our VBA training resources here.

Understanding the Target Page

Microsoft Internet Controls Vba Library Mac Os

The first thing to do is to know what the elements on the target website page are called. To do this, load the website in IE and view its source HTML:

In Internet Explorer 9, this is how you view source HTML using the right mouse button menu.

If you press CTRL + F to find some known text (eg Search for this page), you should be able - eventually - to track down the part of the form of interest:

Vba Microsoft Internet Controls

The HTML for the search button on the Wise Owl website.

See the end of this blog for the BBC and Google UK search form field names.

From the above we can see that the search form with id search contains two controls which a user can interact with:

  1. A textbox called SearchBox; and
  2. A button called submit2.

Now that we know what we're trying to look to in the Document Object Model, we can start writing our VBA.

Referencing the Microsoft Internet Controls

The next thing to do is to make sure that we can get VBA to talk to Internet Explorer. To do this, reference the object library called Microsoft Internet Controls (if you're not sure what references are, read this first).

First, in VBA create a reference:

Choose the option shown from the VBA code editor (this example is for Excel).

Select Microsoft Internet Controls (you may find it helpful to type an M in first, to go down to the object libraries starting with M):

Tick the Microsoft Internet Controls object library reference

Select OK. If you choose the menu option again, you'll see this reference has moved to near the top of the list:

The libraries referenced always include Excel. The one you just chose appears near the top of the list.

The Code to Link to IE

You can now write the code to link to Internet Explorer - here's a suggestion:

Sub UseInternetExplorer()

'Make sure you've set a reference to the

'Microsoft Internet Controls object library first

'create a variable to refer to an IE application, and

'start up a new copy of IE (you could use GetObject

Microsoft Internet Controls Vba Library Machine

'to access an existing copy of you already had one open)

Dim ieApp AsNew SHDocVw.InternetExplorer

'make sure you can see this new copy of IE!

ieApp.Visible = True

'go to the website of interest

ieApp.Navigate 'Wise Owl or other website address goes here'

'wait for page to finish loading

DoWhile ieApp.busy

Internet

Loop

'get a reference to the search form, by finding its id in the

'web page's document object model

Dim ieElement AsObject

Set ieElement = ieApp.document.getElementByID('search')

'search box is composed of text box (item 0) and button (item 1)

'set value of text box to what we're searching for

ieElement(0).Value = 'Excel VBA courses'

'click the button!

ieElement(1).Click

EndSub

If you run this macro, it should search the Wise Owl site for information on Excel VBA courses!

Except that it might not - timing is everything. You may need to delay your code to wait for Internet Explorer or your website to catch up - see below.

Delaying your code

Unfortunately, code runs really quickly and websites load slowly (at least relatively), so you often need to slow your code down with loops like this:

'wait for page to finish loading

DoWhile ieApp.Busy

DoEvents

Loop

Or possibly even this:

'wait for page to finish loading

DoWhile ieApp.Busy And Not ieApp.ReadyState = READYSTATE_COMPLETE

DoEvents

Loop

It seems to be more or less guesswork how many you put in!

BBC and Google Help

Fergus Cairns informs me that you can substitute the following terms for the BBC website and Google UK:

Website Search box Find button
Google UKgbqfqbtnG
BBC UKorb-search-qorb-search-button

So at the time of writing this (September 2014) the following code works - usually!

Sub FillInBBCSearchForm()

'Make sure you've set a reference to the

'Microsoft Internet Controls object library first

'create a variable to refer to an IE application

Dim ieApp AsNew SHDocVw.InternetExplorer

'make sure you can see this new copy of IE!

ieApp.Visible = True

Microsoft Internet Controls Vba Library Mac

'go to the website of interest

ieApp.Navigate 'http://www.google.co.uk'

DoWhile ieApp.Busy

DoEvents

Loop

'wait for page to finish loading

DoWhile ieApp.Busy And Not ieApp.ReadyState = READYSTATE_COMPLETE

DoEvents

Loop

'fill in the search form

ieApp.Document.getElementById('gbqfq').Value = 'Excel VBA'

'wait for page to finish loading

DoWhile ieApp.Busy

DoEvents

Loop

'wait for page to finish loading

DoWhile ieApp.Busy And Not ieApp.ReadyState = READYSTATE_COMPLETE

DoEvents

Loop

'click on the search button

ieApp.Document.all('btnG').Click

EndSub

Notice that I've put in a fairly random number of loops to slow this down!