如何修复这种早期绑定失败?

时间:2017-10-18 20:35:09

标签: html vba

我正在尝试从字符串中删除HTML并找到two methods in this SO thread

第一个答案的代码有效,但使用后期绑定。

With CreateObject("htmlfile")
    .Open
    .write "<p>foo <i>bar</i> <u class='farp'>argle </zzzz> hello </p>"
    .Close
    MsgBox "text=" & .body.outerText
End With

使用早期绑定的替代答案的代码给出了编译错误(“标记为受限制的函数或接口,或者该函数使用Visual Basic中不支持的自动化类型”)。

Public Function StripHtml(inputHtml As String) As String
    With New HTMLDocument
        .Open
        'Following line gives compile error
        .write "<p>foo <i>bar</i> <u class='farp'>argle </zzzz> hello </p>"
        .Close
       StripHtml = .body.outerText
    End With
End Function

我的问题:

  1. 替代答案是不是等同于?
  2. 是否有早期绑定等同于第一个答案,哪个有效?
  3. 当我在对象浏览器中找不到该对象类型时,为什么CreateObject("htmlfile")可以正常工作?

1 个答案:

答案 0 :(得分:1)

这两个是等价的,我想

Option Explicit

Sub Macro1()

    Dim aaa As Object
    Set aaa = CreateObject("htmlfile")
    aaa.Open
    aaa.write "<p>foo <i>bar</i> <u class='farp'>argle </zzzz> hello </p>"
    aaa.Close
    Debug.Print "text=" & aaa.body.outerText

' ---------------------------------------------------

    Dim bbb As New HTMLDocument
    bbb.body.innerHTML = "<p>foo <i>bar</i> <u class='farp'>argle </zzzz> hello </p>"
    Debug.Print "text=" & bbb.body.outerText

End Sub

关于CreateObject("htmlfile")的问题应该阅读“为什么With CreateObject("htmlfile")有效...”

with命令创建一个临时的,未命名的对象(它类似于某些语言中使用的lambda函数)

如果你需要检查它,那么使用set命令创建一个引用它的变量