In order to not get a "window.external is null or not an object" error you have to set security permissions to full trust, among other things, but this was what stopped me.
Imports System.Security.Permissions
<PermissionSet(SecurityAction.Demand, Name:="FullTrust")> _
<System.Runtime.InteropServices.ComVisibleAttribute(True)> _
Public Class Form1
.
.
.
I write because this has been the bane of my life for about a week.
You get the same effect by viewing the offending page within Microsoft Office Outlook.