Not only Permission denied, but also skipping over links altogether.
I tried all sorts of things, including MSXML2.60, but I only got "We notice you are using an outdated version of Internet Explorer. This version is not supported by *******."
I tried including a .busy element to the code (still there) but that didn't work, so now I've been lazy and just added a 1 second delay which seems to allow the page to load. You may need to tweak that time as your web bandwidth may be better than mine. Too short a delay and it will not come up with a result - exactly the same as if there is no address to return, unfortunately.
You may also have run into resource problems, because each time you run the macro, you'd create a new instance of ineternet explorer, but the previous instance hadn't been shut down (and was still invisible), so you'd end up with many invisible instances of Internet Explorer. I've added a .Quit line to stop that happenng.
So the code will run a lot slower now, but hopefully you'll get your values.
Sub scrapeHyperlinksWebsite()
Dim IE As InternetExplorer
Dim HTML As HTMLDocument
Dim Link As Object
Dim ElementCol As Object
Dim erow As Long
Application.ScreenUpdating = False
Set IE = New InternetExplorer
IE.Visible = False
myCount = 0
For Each cll In Range("B1:B14").Cells '<<adjust
'cll.Select
myCount = myCount + 1
IE.navigate cll.Hyperlinks(1).Address
Application.StatusBar = "Loading website " & myCount & "…"
Do Until IE.Busy = False: DoEvents: Loop
Do Until IE.readyState = 4: DoEvents: Loop
Application.Wait DateAdd("s", 1, Now)
Set HTML = IE.document
Set ElementCol = HTML.getElementsByTagName("a")
colm = 1
For Each Link In ElementCol
If InStr(Link, "mailto:") Then
'only one of these next 2 lines:
'cll.Offset(, colm).Value = Link
cll.Offset(, colm).Value = Mid(Link, InStr(Link, ":") + 1) 'Right(Link, Len(Link) - InStr(Link, ":"))
colm = colm + 1
End If
Next Link
Next cll
IE.Quit
Set IE = Nothing
Application.StatusBar = ""
Application.ScreenUpdating = True
End Sub