掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ISAXXMLReader::Parse (ID:102513)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
熊谷隆史さん、こんにちは。 この件は別の場所でも拝見いたしました。 xmlには無知ですが、今回の件で少し興味を持ち、 上記のidlにてTlbファイルを作って参照設定してみました。 (引数の型指定問題は論外にします。) (環境)WindowXP(SP3)、Excel2003(SP3) しかし、 Set rdr = New hoge.SAXXMLReader60 の直後、msgbox typename(rdr) で確認したら、ISAXXMLReaderではなく、「IVBSAXXMLReader」 インターフェイスですね。 IVBSAXXMLReaderはIDispatch Interfaceを継承しているので 折角作ったTypLibのVTableがおかしくなっているかと思います。 Windows7の環境がないので、検証は出来ませんが、当方の 環境では下記のような方法で問題ありませんでした。 Private Declare Function SHCreateStreamOnFileW& Lib "Shlwapi" _ (ByVal pszFile&, ByVal grfMode&, ByVal ppstm&) Sub Indentation2(strPath, doc) Dim hr As Long Dim stm As IUnknown 'IStream Dim wrt As Object Dim rdr As Object 'IVBSAXXMLReader 'STGM_READWRITE Or STGM_SHARE_DENY_WRITE Or STGM_CREATE hr = SHCreateStreamOnFileW(StrPtr(strPath), 4130&, VarPtr(stm)) If hr < 0 Then Err.Raise hr If stm Is Nothing Then Err.Raise 7 Set wrt = CreateObject("MSXML2.MXXMLWriter") wrt.Version = "1.0" wrt.Encoding = "utf-8" wrt.indent = True wrt.output = stm Set rdr = CreateObject("MSXML2.SAXXMLReader") 'New SAXXMLReader60 Set rdr.contentHandler = wrt rdr.Parse doc End Sub
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.