diff --git a/dlls/mshtml/htmldoc.c b/dlls/mshtml/htmldoc.c
index 935ec00764f..93aea065011 100644
--- a/dlls/mshtml/htmldoc.c
+++ b/dlls/mshtml/htmldoc.c
@@ -1773,6 +1773,9 @@ static BOOL htmldoc_qi(HTMLDocument *This, REFIID riid, void **ppv)
}else if(IsEqualGUID(&IID_IMarshal, riid)) {
TRACE("(%p)->(IID_IMarshal %p) returning NULL\n", This, ppv);
*ppv = NULL;
+ }else if(IsEqualGUID(&IID_IExternalConnection, riid)) {
+ TRACE("(%p)->(IID_IExternalConnection %p) returning NULL\n", This, ppv);
+ *ppv = NULL;
}else if(IsEqualGUID(&IID_IObjectWithSite, riid)) {
TRACE("(%p)->(IID_IObjectWithSite %p)\n", This, ppv);
*ppv = OBJSITE(This);
diff --git a/dlls/mshtml/tests/htmldoc.c b/dlls/mshtml/tests/htmldoc.c
index d49a6ffc364..adc318afac9 100644
--- a/dlls/mshtml/tests/htmldoc.c
+++ b/dlls/mshtml/tests/htmldoc.c
@@ -4309,6 +4309,11 @@ static void test_QueryInterface(IHTMLDocument2 *doc)
hres = IUnknown_QueryInterface(doc, &IID_IMarshal, (void**)&qi);
ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
ok(qi == NULL, "qi=%p, expected NULL\n", qi);
+
+ qi = (void*)0xdeadbeef;
+ hres = IUnknown_QueryInterface(doc, &IID_IExternalConnection, (void**)&qi);
+ ok(hres == E_NOINTERFACE, "QueryInterface returned %08x, expected E_NOINTERFACE\n", hres);
+ ok(qi == NULL, "qi=%p, expected NULL\n", qi);
}
static void init_test(enum load_state_t ls) {