2017-10-18 15 views
1

文字列から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")は、オブジェクトブラウザでそのオブジェクトタイプが見つからない場合はどうしてですか?
+0

"answer 1 and 4" - 並べ替えは、誰が表示しているか、どのように回答を並べ替えるかによって異なります。 「1と4」はほとんど何も意味しません。特定のSOの投稿にリンクする場合は、それぞれの下に適切な[共有]リンクを使用してください。 –

+0

@ Mat'sMugありがとう。私はそれを知らなかった。特定のSOの投稿にリンクしました。答えのコードスニペットが含まれていますので、質問を編集します。 – RobertSF

答えて

1

これら二つは等価で、私は

withコマンド、一時、無名のオブジェクトを作成し、 "With CreateObject("htmlfile")仕事は...ない理由"

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")を読むべきだと思います(一部の言語で使用されているラムダ関数に似ています)

次に、setコマンドを使用してそれを参照する変数を作成します。

+0

ありがとう!トリックは '.Open'を使わないようです。オブジェクトはHTML - >テキストコンバータとして機能します。 明確にするために、私は 'with'について知っています。私が理解していないのは '' htmlfile ''が有効なオブジェクト名である理由です。私は 'CreateObject'の引数はVBAが知っているオブジェクトの名前でなければならないと思っていましたが、オブジェクトブラウザでは見つかりませんでした。 – RobertSF

+1

それが見つかりました...それはWindows COMオブジェクトですので、Windowsはそれについて知っています....そして、デフォルトでは、VBAもそうです(私は思っています)...いくつかの情報はこちらhttps://autohotkey.com/board/topic/56987-com-object-reference-autohotkey-v11/.........おそらく登録されているdllファイル – jsotola

関連する問題