掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ISAXXMLReader::Parse (ID:102511)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
こんにちは。 環境 Windows 7/Excel 2010 ISAXXMLReader* pRdr; HRESULT hr = CoCreateInstance( CLSID_SAXXMLReader60, NULL, CLSCTX_ALL, IID_ISAXXMLReader,(void**)&pRdr); if(FAILED(hr)) return; 上記の様なC++と等価な呼び出しを行いたくて、タイプライブラリを作成して、 (規定インターフェースをISAXXMLReaderに設定) VBAでインスタンス化しています。 (引数のdocは、MSXML2.DOMDocument) IStreamはきちんと得られているのですが > rdr.Parse doc で、 --- 実行時エラー '5': プロシージャの呼び出し、または引数が不正です。 --- となります。 どなたか、お分かりになる方がいらっしゃいましたら、アドバイスを頂けませんでしょうか。 Sub Indentation(strPath, doc) Dim hr As Long Dim stm As IUnknown Dim wrt As Object Dim rdr As hoge.ISAXXMLReader Set stm = hoge.API_ole32.CreateStreamOnHGlobal(0, 1) 'STGM_READWRITE Or STGM_SHARE_DENY_WRITE Or STGM_CREATE hr = hoge.API_shlwapi.SHCreateStreamOnFileW(strPath, 4130&, stm) If hr < 0 Then Err.Raise hr If stm Is Nothing Then Err.Raise 7 Set wrt = CreateObject("MSXML2.MXXMLWriter.6.0") wrt.Version = "1.0" wrt.Encoding = "utf-8" wrt.indent = True wrt.output = stm Set rdr = New hoge.SAXXMLReader60 rdr.putContentHandler wrt rdr.Parse doc End Sub 長いのですが。 hoge.idl [ uuid(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx), version(1.0), helpstring ("hoge") ] library hoge { importlib("stdole2.tlb"); interface ISAXXMLReader; [ odl, uuid(A4F96ED0-F829-476E-81C0-CDC7BD2A0802), helpstring ("ISAXXMLReader interface") ] interface ISAXXMLReader : IUnknown { HRESULT _stdcall getFeature( [in] unsigned short* pwchName, [out, retval] VARIANT_BOOL* pvfValue); HRESULT _stdcall putFeature( [in] unsigned short* pwchName, [in] VARIANT_BOOL vfValue); HRESULT _stdcall getProperty( [in] unsigned short* pwchName, [out, retval] VARIANT* pvarValue); HRESULT _stdcall putProperty( [in] unsigned short* pwchName, [in] VARIANT varValue); HRESULT _stdcall getEntityResolver([out, retval] long** ppResolver); HRESULT _stdcall putEntityResolver([in] long* pResolver); HRESULT _stdcall getContentHandler([out, retval] IUnknown** ppHandler); HRESULT _stdcall putContentHandler([in] IUnknown* pHandler); HRESULT _stdcall getDTDHandler([out, retval] long** ppHandler); HRESULT _stdcall putDTDHandler([in] long* pHandler); HRESULT _stdcall getErrorHandler([out, retval] long** ppHandler); HRESULT _stdcall putErrorHandler([in] long* pHandler); HRESULT _stdcall getBaseURL([out, retval] unsigned short** ppwchBaseUrl); HRESULT _stdcall putBaseURL([in] unsigned short* pwchBaseUrl); HRESULT _stdcall getSecureBaseURL([out, retval] unsigned short** ppwchSecureBaseUrl); HRESULT _stdcall putSecureBaseURL([in] unsigned short* pwchSecureBaseUrl); HRESULT _stdcall parse([in, optional] VARIANT varInput); HRESULT _stdcall parseURL([in] unsigned short* pwchUrl); }; [ uuid(88d96a0c-f192-11d4-a65f-0040963251e5), helpstring ("SAX XML Reader 6.0") ] coclass SAXXMLReader60 { [default] interface ISAXXMLReader; }; [ dllname ("Shlwapi.dll") ] module API_shlwapi { [entry("SHCreateStreamOnFileW")] long _stdcall SHCreateStreamOnFileW( [in] LPWSTR pszFile, [in] long grfMode, [out] IUnknown **ppstm); }; [ dllname ("ole32.dll") ] module API_ole32 { [entry("CreateStreamOnHGlobal")] HRESULT _stdcall CreateStreamOnHGlobal( [in] long hGlobal, [in] long fDeleteOnRelease, [out, retval] IUnknown **ppstm ); }; }; 参考) http://web.archive.org/web/20060721221948/http://forums.belution.com/ja/xml/000/000/52s.shtml
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.