CreateObjectとNewの違い

このQ&Aのポイント
  • CreateObjectとNewの違いについて説明します。VBを使用してMicrosoft XML Parserを使いたい場合、CreateObjectとNewの使い方によってエラーが出ることがあります。詳細を解説します。
  • CreateObjectとNewの違いについて説明します。Microsoft XML Parserを使用する際に、CreateObjectやNewを使うことで種類によってはエラーが発生することがあります。エラーの原因と解決策について解説します。
  • CreateObjectとNewの違いについて詳しく説明します。VBを使ってMicrosoft XML Parserを利用する場合に、CreateObjectやNewを使う際には注意が必要です。エラーの原因と回避策について解説します。
回答を見る
  • ベストアンサー

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) です。 よろしくお願いします。

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

  • ベストアンサー
  • nakashi
  • ベストアンサー率51% (21/41)
回答No.2

MSXML.DLLをレジストリ登録すれば 古いMSXMLを使うこともできます。 くわしくは下記URLを参照

参考URL:
http://www.microsoft.com/japan/developer/workshop/xml/general/replacemode.asp
zerosix
質問者

お礼

お忙しいところ、どうもありがとうございます。 試してみます。

その他の回答 (1)

  • nakashi
  • ベストアンサー率51% (21/41)
回答No.1

>Microsoft XML Parserを使用したいと思っています。 >VBを立ち上げ、標準EXEのプロジェクトで、参照設定を >Microsoft XML v2.6(なぜ2.6か不明) >にして、 この時、F2を押してオブジェクトブラウザをだして <すべてのライブラリ>の脇の↓を押した時に MSXMLオブジェクトがありますか? >dim xDoc as MSXML.DOMDocument >set xDoc = New MSXML.DOMDocument dim xDoc as MSXML2.DOMDocument set xDoc = New MSXML2.DOMDocument または dim xDoc as DOMDocument set xDoc = New DOMDocument でコンパイルエラーが取れませんか? >Set xDoc = CreateObject("MSXML.DOMDocument") "MSXML.DOMDocument"この文字列と >dim xDoc as MSXML.DOMDocument MSXML.DOMDocumentは意味がことなります。

zerosix
質問者

お礼

お返事ありがとうございます。 >この時、F2を押してオブジェクトブラウザをだして ><すべてのライブラリ>の脇の↓を押した時に >MSXMLオブジェクトがありますか? これがないのです。MSXML2だけなのです。 なので、使用できないのも仕方ないかと思うのです。 >>dim xDoc as MSXML.DOMDocument >>set xDoc = New MSXML.DOMDocument >dim xDoc as MSXML2.DOMDocument >set xDoc = New MSXML2.DOMDocument >でコンパイルエラーが取れませんか? 確かに取れます。 でも昔作成した時のプロジェクト(この時は、 Microsoft XML v2.0を参照設定してました)を全て MSXML→MSXML2にしても動作が保証されるか、つまり 例えば、createElementが使えるかってご存知ですか? まあ、この辺は英語のドキュメントを見て努力しますが。 >>Set xDoc = CreateObject("MSXML.DOMDocument") >"MSXML.DOMDocument"この文字列と >>dim xDoc as MSXML.DOMDocument >MSXML.DOMDocumentは意味がことなります。 そうなのですか。勘違いしてました。 なんで、MSXMLが参照できないんだろう(;_;)

関連するQ&A

  • 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
  • XMLの要素の内容の中に要素

    VisualBasic6.0にて、XMLを作成するプログラムを作っています。 XMLの作成、編集はMSXMLを使用しており、編集保存はできたのですが、下記のような要素の出力の仕方がわかりません。 <Node1>  あいうえお  <Node1-1>abcde</Node1-1>  かきくけこ </Node1> このように要素の文字列の途中に子要素を作成したいです。 「Node1」要素に、子要素「Node1-1」を追加するサンプルです。 Cドライブ直下に以下の内容のXMLファイル「test.xml」を作成 <?xml version="1.0" encoding="shift_jis"?> <Node1> </Node1> VB6にて、参照設定に「Microsoft XML V6.0」を追加し以下のコードを作成。 Private Sub Command1_Click() Dim xDoc As MSXML2.DOMDocument Set xDoc = New MSXML2.DOMDocument Dim node As IXMLDOMNodeList Dim Addnode As IXMLDOMNode Dim obj As IXMLDOMNode If xDoc.Load("C:\test.xml") Then Set node = xDoc.documentElement.selectNodes("/Node1") For Each obj In node Set Addnode = obj.appendChild(xDoc.createNode(NODE_ELEMENT, "Node1-1", "")) Addnode.Text = "abcde" Next xDoc.save ("C:\test.xml") End If Set xDoc = Nothing End Sub

  • 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で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

  • VB2005でXMLのテキストデータをXMLデータにするには?

    VB2005の初心者です。 タグ付きのXMLのテキストデータを読み込んで、項目ごとにDBに登録したいのですが、やり方が分りません。 テキストデータをXMLデータ、もしくはノード、もしくはデータセット型に変換しなければならないと思うのですが、そのやり方を教えていただきたいです。 ちなみに、XMLデータをテキストデータにするのは下記のとおりでできました。この strText を逆にXMLデータに変換したいです。 Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:XMLData.xml") strText = xmlDoc.xml 何かヒントでも良いので、たくさんの方の知恵をお借りしたいです。

  • excelvbaでxmlファイルの内容の抽出

    excelvbaでDomを使用し指定したxmlファイルを読み込んでselectNodes("")で欲しい内容を抽出をすることは出来ました。 しかしxmlファイルが大量にあり一つ一つファイルを指定して抽出するのは時間がかかりすぎてしまいます。 ですのでフォルダ内にあるすべてのxmlファイルからselectNodes("")で欲しい内容を抽出したいのですが出来ますでしょうか? また抽出したものをmdbのテーブルにレコードとして保存したいのですが 現在はexcelのセルに書き込んでからmdbに入れているのですが vbaで欲しい内容を抽出した結果をそのままmdbに保存する方法はありますか? お願い致します。 下記に指定したxmlファイルを読み込んで欲しい内容を抽出するというのを行ったときのものを載せておきます。 Dim XDoc As MSXML2.DOMDocument Dim Node As MSXML2.IXMLDOMNode Sub てすと() Set XDoc = New MSXML2.DOMDocument If XDoc.Load(ThisWorkbook.Path & "\テスト.xml") = False Then With XDoc.parseError Debug.Print .errorCode & " / " & Replace(.reason, vbCrLf, "") Debug.Print "行 :" & .Line & " , カラム :" & .linepos Debug.Print "内容 :" & .srcText Debug.Print "" Debug.Print "ファイル(URL) :" & .url Debug.Print "ファイル先頭からの位置 :" & .filepos End With Exit Sub End If Debug.Print "読み込み成功" For Each Node In XDoc.selectNodes("抽出したい内容") Cells(1, 1) = Node.Text Debug.Print Node.Text Next Set XDoc = Nothing End Sub

  • VBでXMLファイルを作成していますが、エラーになります

    すみません、教えてください。 VB6でXMLファイルを作成しています。コメントを入れようとすると"!--"の文字でこけます。どうしたらいいのでしょうか?コーディングは以下のようにしてます。 Dim xmlDoc As New MSXML2.DOMDocument40 'XMLドキュメント Dim xmlPI As IXMLDOMProcessingInstruction 'XML宣言 Dim node(3) As IXMLDOMNode '要素 garFNRpt = sFPass + "Sousinfile\DATA\" + sFilemei + ".xml" 'XML宣言を追加します。 Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")) Set node(1) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, """!--""kml基本情報", "")) よろしくお願いします

  • 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>

  • XMLデータをパーサーをかけてテキストデータにするには?

    VB2005の初心者です。 XMLファイルを読み込んで、パーサーをかけてテキストデータにしたいのですが、やり方が分りません。 (パーサーを使わずにテキストデータにすることはできます。) ご存知の方は、ヒントでも良いので教えていただきたいです。 仕事で行き詰っているため、たくさんの方の情報をいただけると幸いです。 下記は、パーサーを使わないやり方です。 Dim xmlDoc As XmlDocument = New XmlDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:\XMLData.xml") strText = xmldoc.OuterXml パーサーを使う場合、下記のようになると思うのですが、 どのようにテキストデータにすれば良いのか分りません。 (OuterXmlが使えません。) Dim xmlDoc As MSXML2.DOMDocument = New MSXML2.DOMDocument Dim strText As String xmlDoc.PreserveWhitespace = True xmlDoc.Load("C:\XMLData.xml") よろしくお願い致します。

  • VB2005でXMLデータから複数ある要素の入れ子を取得する方法

    VB2005、XML の初心者です。 VB2005でXMLデータをMSXMLで解析していますが、下記のようなXMLの場合、Itemがうまく解析できません。 Module > Parent > Item という親子関係ですが、 全て数は可変です。(子がない場合もあります。) <Body> <Content> <Module> </Module> <Module> <Parent> <Item>A</Item> </Parent> </Module> <Module> <Parent> <Item>AA</Item> <Item>BB</Item> <Item>CC</Item> </Parent> </Module> <Module> </Module> </Content> </Body> ソースは下記です。 Dim LmsxmlDoc As MSXML2.DOMDocument LmsxmlDoc = New MSXML2.DOMDocument LmsxmlDoc.LoadXml(XMLData) Dim LModules As MSXML2.IXMLDOMNodeList '下記Moduleは取得できる LModules = LmsxmlDoc.SelectNodes("/Body/Content/Module") Dim LItems As MSXML2.IXMLDOMNodeList Dim LmsxmlModule As MSXML2.DOMDocument LmsxmlModule = New MSXML2.DOMDocument For Each LModule As MSXML2.IXMLDOMNode In LModules '下記(1)でも(2)でもItemが取得できない (1)LItems = LModule.selectNodes("/Module/Parent/Item") LmsxmlModule.LoadXml(LModule.Xml) (2)LItems = LmsxmlModule.selectNodes("/Module/Parent/Item") For Each LItem As MSXML2.IXMLDOMNode In LItems '処理 Next Next 上記ソースでは、(1)、(2)のどちらの方法でもなぜかItemが取得できません。 Itemを取得するにはどうすれば良いのでしょうか。 ヒントでも良いので、皆様の知恵をお借りできれば幸いです。 よろしくお願い致します。