0

CreateObject に問題があります。それは宣言されていない要素だと私に言い続けます。追加する必要がある特定の参照はありますか?

Excel などのリファレンスは既に含まれており、MSDN からこれ以上の情報は得られません。

Public Function BBANtoBIC(ByVal BBAN As String) As String
        Dim xd As Object
        xd = CreateObject("msxml2.domdocument.4.0")
        xd.Load("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
        Do While xd.readyState <> 4
            DoEvents()
        Loop
        BBANtoBIC = xd.Text
    End Function
4

2 に答える 2

2

「msxml2.domdocument.4.0」がシステムにインストールされていない可能性があります。2001年からです。おそらく「Msxml2.DOMDocument.6.0」を使用する必要があります。Internet Explorer で適切なバージョンの MSXML を使用するを参照してください。

于 2013-10-07T13:12:07.060 に答える
1

その関数を読んで、ドキュメントのテキストを返すだけです。xml では実際には何もしません。したがって、これを次のように置き換えることができます。

Public Function BBANtoBIC(ByVal BBAN As String) As String
    Using wc As New System.Net.WebClient()
        Return wc.DownloadString("http://www.ibanbic.be/IBANBIC.asmx/BBANtoBIC?value=" & BBAN)
    End Using
End Function

これが正しくない理由は 2 つだけだと思います。1 つ目は、ダウンロードしたものが実際に有効で整形式の xml であることを確認するために xml ドキュメント オブジェクトをカウントしている場合です。この場合、関数が呼び出される場所の近くにエラー処理コードが必要です。2 つ目はDoEvents、xml パーサーを待機するのではなく、プログラムの応答性のために待機ループが存在する場合です...これも非常に貧弱な設計です。そのように DoEvents() を使用すると、副作用が生じる可能性があります。xml パーサーを待機するだけの場合、新しいコードはその遅延を完全に回避する必要があります。

xml を解析/検証する必要がある場合は、.Net フレームワークに組み込まれている方法が少なくとも 3 つありますCreateObject()CreateObject().Netで使用する必要はありません。これまで

于 2013-10-07T13:16:58.813 に答える