VBAでMSXML2.DOMDocumentを使用したい

このQ&Aのポイント
  • VBAを使用して「MSXML2.DOMDocument」を使いたい場合、コンパイルエラーが発生します。初心者の方に解決策を教えてください。
  • VBAで「MSXML2.DOMDocument」を使うためには、何も設定せずにコードを入力するだけではエラーが発生します。初心者の方に解決策をお教えします。
  • VBAで「MSXML2.DOMDocument」を使用する際に「コンパイルエラー:ユーザ定義型は定義されていません」というメッセージが表示されます。初心者の方に解決策を紹介します。
回答を見る
  • ベストアンサー

VBAでMSXML2.DOMDocument を使用したい

お世話になります。 下記ソースのようにVBAで「MSXML2.DOMDocument」を使用したいと 思うのですが実行すると 「Dim D As MSXML2.DOMDocument」の箇所で 「コンパイルエラー:ユーザ定義型は定義されていません」 とメッセージがでます。 どのようにすれば「MSXML2.DOMDocument」が使えるのでしょうか? 私は、完全な初心者でありました。何も設定せずに、VBAに下記の 文を入力しました。 解決策と、もし、VBAでDOMを使用する初心者サイトがありましたら 教えて頂ければとおもいます。 よろしくお願いします。 VBAソース-------------------------------------------- Dim D As MSXML2.DOMDocument Set D = New MSXML2.DOMDocument D.async = False If D.Load("C:\SAMPLE.XML") Then MsgBox "読み込み成功" Else MsgBox "読み込み失敗" End If

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

ツール→参照設定→Microsoft XML v6.0にチェックを入れる #事前にMS XML 6.0が必要。 #Windows XP SP3にMSXML v6 SP2が含まれるようだ #特にSPが書かれていないが,MSXML v6 SP2とバージョンが同じらしい。 http://www.microsoft.com/downloads/details.aspx?familyid=59914795-60C7-4EBE-828D-F28CB457E6E3&displaylang=en オマケ: http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx

関連するQ&A

  • [VBA] MSXML2.DOMDocument

    MSXML2.DOMDocument を用いて、xml のデータを取得しています。 相手のサーバーがダウンしていると、 Dim xmlDoc As New MSXML2.DOMDocument xmlDoc.async = False xmlDoc.Load (taisyoURL) ↑ この部分でフリーズしてしまい、それ以降続行できません。 false も返ってくるわけではないのでどうしたらよいのか 困っております。 タイムアウト又は何かしらの方法でエラー処理をさせる ことはできますでしょうか?

  • Access VBAでXMLが読み込めない

    Access2013でXMLファイルを読み込むVBAを作成しています。 VBA実行時に「実行時エラー '-2147467259(80004005)': 未宣言の名前空間の接頭語を参照します :'a'」と表示されてしまい読み込むことができません。 色々調べた結果、下記のページが今回のエラーに関係ありそうということは分かったのですが、VBAのソースをどのように書き換えれば良いか分からず苦戦しております。 http://support.microsoft.com/kb/280457/ja 解決法をご存じ方がいらっしゃいましたらご教授いただければと思います。 よろしくお願いします。 --------------以下ソース-------------- XMLファイル <?xml version="1.0"?> <rss version="2.0"> <a:b>0</a:b> <title>test</title> </rss> VBA本文 Sub readXml() Dim XDoc As MSXML2.DOMDocument Dim node As MSXML2.IXMLDOMNode Set XDoc = New MSXML2.DOMDocument If XDoc.Load(CurrentProject.Path & "\" & "a.xml") = False Then MsgBox "読み込み失敗" Exit Sub End If Dim rs As New ADODB.Recordset rs.Open "test", CurrentProject.Connection, , adLockOptimistic rs.AddNew    For Each node In XDoc.selectNodes("rss/title") rs!title = node.Text rs.Update rs.Close End Sub

  • VBAのXML処理でメモリが足りない?

    Excel2003のVBAでMSXML2.DomDocumentを使ってXMLの処理をしています。http経由でXMLを取得し、パースして、Sheetに書き込んでいます。 XMLの行数が少ないうちは問題ないのですが、行数が1600件を超えたあたりで、LoadXML()メソッドで落ちます。 XMLを分割して、500行ずつや100行ずつLoadXMLさせても、合計処理数が1600行あたりで、必ずLoadXML()に失敗します。 メモリ不足かと思って、ループするごごとにSet Dom = Nothingのようにしてオブジェクトをクリアしていますが、効果がありません。 処理させたいXMLは最大で8000行になります。 なんとか解決策はないでしょうか? 以下、ソースの一部です。 Dim Dom As New MSXML2.DOMDocument Function get_xml_dom(query) Dim MSX As Object Set Dom = New MSXML2.DOMDocument Dim Url As String host_address = "hostname" host_path = "/keyword_report/get_keyword_data" Url = "http://" & host_address & host_path & query Set MSX = CreateObject("MSXML2.XMLHTTP") MSX.Open "GET", Url, False MSX.Send If Dom.LoadXML(MSX.responseText) Then '<- 1600件ぐらい処理させるとここで落ちる Debug.Print "Load XML is True" get_xml_dom = True Else get_xml_dom = False Debug.Print "Load XML is False" End If Set MSX = Nothing End Function このあと、DomからXPATHで要素を取り出して、シートに埋め込んでいます。

  • Access VBAで指定した要素を読み込みたい

    お世話になっております。 Access VBAでRSSを読み込み指定した要素の値を取得したいのですが、ググってもよく分からず どのようにすれば良いのか分からないので教えてください。 下記XMLの「item」の値を取得しフィールドへ値を挿入したいのです。 item_title1を読み込んだ後に次に別のレコードとしてitem_title2を読みたいといった形です。 初心者で言葉足らずの部分があると思いますが、ご教授の程よろしくお願いします。 VBA本文 Sub readXml() Dim XDoc As MSXML2.DOMDocument Dim node As MSXML2.IXMLDOMNode Set XDoc = New MSXML2.DOMDocument If XDoc.Load(CurrentProject.Path & "\" & "a.xml") = False Then MsgBox "読み込み失敗" Exit Sub End If Dim rs As New ADODB.Recordset 'データベースにデータを挿入する。 rs.Open "test", CurrentProject.Connection, , adLockOptimistic rs.AddNew    For Each node In XDoc.selectNodes("rss/content/title") rs!title = node.Text rs.Update rs.Close End Sub 取込元XML(RSS)ソース <?xml version="1.0"?> <rss version="2.0"> <content> <title>test/title> <language>ja</language> <item> <title>item_title1</title> </item> <item> <title>item_title2</title> </item> </content> </rss>

  • VB6.0でDOMを使用してXMLを編集したい

    VB6.0でDOMを使用して下記XMLを読込んで<著者 id="1234567">のidの内容を「1234567」→「9999999」に変更したいのですがどのようにしたらよいのかわからなくて困っています。 よろしくお願いします。 【SAMPLE.XML】 <?xml version='1.0' encoding="UTF-8" ?> <書籍情報> <著者 ="1234567"> <名前>磯野カツオ</名前> <性別>男性</性別> </著者> </書籍情報> 【VB6.0】 Dim xmlDocument As New MSXML2.DOMDocument If Not xmlDocument.Load("SAMPLE.XML") Then   MsgBox "XML Read Error!!!"   Exit Function End If '************************************************ 'どのようにコーディングしたらいいのでしょうか? '************************************************ Call xmlDocument.Save("SAMPLE01.XML")

  • DOCUMENT行の書き出しについて-VBAで

    DOCUMENT行の書き出しについて(http://okwave.jp/qa/q4495749.html)の回答1を参考にしてエクセルのVBAでやってみたが、エラーが出てしまいます。 どうすればよいでしょうか? Windows XP SP3 Excel2003 SP3 参照設定は以下のもので試してみましたが、エラーになります。 Microsoft XML,v3.0 Microsoft XML,v6.0 --------------------------------------------------------------- Dim xmlDoc As MSXML2.DOMDocument Dim xmlPI As IXMLDOMProcessingInstruction Dim xmlDoctype As XmlDocumentType '←ここでコンパイルエラー 'エラーメッセージ 'コンパイルエラー: 'ユーザー定義型は定義されていません。 Set xmlDoc = New MSXML2.DOMDocument Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set xmlDoctype = xmlDoc.appendChild(xmlDoc.CreateDocumentType("BookList", "", "Title.dtd", "")) xmlDoc.Save "C:\Books\Title.xml" ---------------------------------------------------------------

    • ベストアンサー
    • XML
  • VBAでxmlから特定の文字を変数に入れたい

    VBAからXMLを取得したくて方法を検索し、以下のコードで何とか取得ができました。 Sub httpRequest() Dim HttpReq As MSXML2.XMLHTTP Dim DomDoc As MSXML2.DOMDocument Dim targetURL As String targetURI = "http://www.drk7.jp/weather/xml/14.xml" 'HTTP GET Set HttpReq = CreateObject("MSXML2.XMLHTTP") HttpReq.Open "GET", targetURI, False HttpReq.send (Null) 'XML PARSE Set DomDoc = CreateObject("MSXML2.DOMDocument") DomDoc.LoadXML (HttpReq.responseText) dumpDomDoc DomDoc.ChildNodes Set HttpReq = Nothing Set DomDoc = Nothing End Sub Sub dumpDomDoc(objNode) Dim obj For Each obj In objNode MsgBox obj.ParentNode.nodeName & " : " & obj.NodeValue If obj.HasChildNodes Then dumpDomDoc obj.ChildNodes End If Next End Sub このコードですと、読み込んだXMLを一行づつメッセージボックスに延々と表示するだけなのですが、 例えば行先のXMLファイルにある<description>と</description>に囲まれた部分だけを変数に格納するにはどのように記述すればよろしいのでしょうか? ググってはみましたが知識不足の為、解説も理解できず困っております。 大変お手数ですがご教示いただけますようお願いします。

  • PHP5 domDocumentで簡単に深いノードを取得する。但し、SimpleXMLを使わない

    環境はPHP5です。 SimpleXML(simplexml_load_file)を使わない事情がありまして、domDocumentを使っています。 $dom = new domDocument(); $dom->load("example.xml"); $root = $dom->documentElement; foreach($root->childNodes as $elems) { if ($elems->nodeType == XML_ELEMENT_NODE && $elems->nodeName == "Items") { ... ... ... 例えば以下のようなXMLの場合、<D2>のyyyyyを取得する為に上のプログラムだと、 foreach, ifのネストが深くなり、階層が深くなるにつれてプログラムの記述も増えて 非常に面倒ですが、$rootを使って、yyyyyの値を1行程度で取得する方法ないのでしょうか? <A> <Items> <B1></B1> <B2> <C> <D1>xxxxx</D1> <D2>yyyyy</D2> </C> </B2> <B3></B3> </Items> </A>

    • ベストアンサー
    • PHP
  • 参照設定に「MSXML2.XMLHTTP」

    VBAでMSXML2.XMLHTTPを使ってIE操作をしたいのですが、 参照設定に「MSXML2.XMLHTTP」が見つかりません。 Dim objIE As Object でも宣言できますが、 本物のオブジェクトで宣言したいです。 何かをダウンロードしなくてはいけないのでしょうか?

  • CreateObjectとNewの違い

    Microsoft XML Parserを使用したいと思っています。 VBを立ち上げ、標準EXEのプロジェクトで、参照設定を Microsoft XML v2.6(なぜ2.6か不明) にして、 dim xDoc as MSXML.DOMDocument set xDoc = New MSXML.DOMDocument とコーディングすると、実行時に、 コンパイルエラー:ユーザ定義型は定義されていません*** と怒られます。 でも、 Dim xDoc As Object Set xDoc = CreateObject("MSXML.DOMDocument") とすると、実行できます。 どうして、***のようなエラーが出るのですか? 両方ともエラーが出るならつじつまが合っている気がするのですが、 そうじゃないのですか? 環境は OS:Win98SE,VB6.0(SP5),IE5.5(SP1) です。 よろしくお願いします。

専門家に質問してみよう