web-dev-qa-db-ja.com

アーリーバインドMSXMLオブジェクトを宣言すると、VBAでエラーがスローされます

XmlデータをExcelにインポートしようとしています。ですから、コードの最初の行は

Dim XMLDOC As MSXML2.DOMDocument

これにより、「ユーザー定義タイプが定義されていません」というエラーが発生します

28
user1486889

VBE内で、[ツール]-> [参照]に移動し、[Microsoft XML v6.0](または最新のものを選択します。これにより、XMLオブジェクトライブラリにアクセスできます。

豪華な写真で更新されました!

enter image description here

35
Scott Holtzman

Microsoft XML, v3.0が必要なDOMDocumentが定義されていましたが、参照でMicrosoft XML, v6.0が選択されていたため、以下のエラーが発生しました

「ユーザー定義タイプが定義されていません」。

解決策

解決策は、DOMDocumentDOMDocument60に変更するか(60はバージョン6.0を使用)、DomDocumentMicrosoft XML, v3.0参照を使用することでした。


簡単なメモですが、Microsoft XML v4.0などの別のバージョンを使用している場合は、DOMDocument40を使用する必要があります。これは、DOMDocumentの末尾の数字が、使用されているライブラリのバージョンに固有であるためです。

26
Joshua Duxbury

私は他の誰かが書いたVBA Excelマクロを使用しており、最近Windows 7/Office 2010からWindows 10/Office 2016にアップグレードした後、それを修正する仕事をしました。同じ「ユーザー定義型が定義されていません」コンパイルエラーを受け取り始めました。以前のインストールにもMS XML v6.0が含まれていましたが、明らかにWindows 10および/またはOffice 2016のコードでこのバージョンを明示的に指定する必要があります(どのアップグレードが問題の原因であるかを確認できませんでした)。次の検索/置換を実行することで問題を解決できました。

"DOMDocument" to "MSXML2.DOMDocument60"
"XMLHTTP" to "MSXML2.XMLHTTP60"
3
Chanel

Microsoft Windows 10およびOffice 2016を使用しています。

Microsoft XML 6.0を使用しても問題は解決しません。

Microsoft XML 3.0を選択すると、コンパイルエラーが修正されました

Microsoft XML 3.0 reference

2