お世話になります。
下記ソースのように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

このQ&Aに関連する最新のQ&A

A 回答 (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? …
オマケ:
http://blogs.msdn.com/xmlteam/archive/2006/10/23 …
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessVBAで「dim dbs as database」がエラーになる

済みませんが、非常に基本的なことを聞かせていただきたいと思います。

AccessのVBAで関数を実行すると、いきなりエラーになりました。
dim dbs as database の文でエラーになり、「コンパイルエラー ユーザ定義型が定義されていません」というエラーメッセージが出ました。
databaseが定義されているような感じです。

どうすれば宜しいでしょうか?

Aベストアンサー

こんにちは。maruru01です。

VBEの画面のメニューの[ツール]→[参照設定]で、

「Microsoft DAO X.X Object Library」(X.Xはバージョン)

の項目にチェックが入っていますか?

ちなみに、DatabaseオブジェクトはDAOしかないのでいいですが、Recordsetオブジェクトなどは、ADOとDAOの両方にあるので、

Dim rs As DAO.Recordset

のように、どちらかを明確に記述しないといけません。
統一的で分かりやすいコーディングのためには、Databaseオブジェクトも、

Dim dbs As DAO.Database

のように記述するように心がけましょう。

Q変数の宣言の名称を教えてください。(Dim i As Long)

Dim i As Longについて

「dim」→?
「i」→変数名
「As」→?
「Long」→変数の型

というように、dimとAsがなんと言えばいいのかわかりません。
アドバイスよろしくお願いします。

Aベストアンサー

>「i」→変数名
という形と合わせるのなら、以下のような感じでしょうか?
(意味についてのご質問ではないと受け取りました)

Dim・・・ステートメント
     変数の(型)宣言に用いる
AS・・・・キーワード
     変数や関数の型を示したり、フォルダ(やファイル)名を
     示したりするのに用いる

QVBAで、MsgBox の変数の利用について

ACCESS2010を利用してます。
Dim a as String
Dim memo as String

a= "■機種名:" & Me.[機種名]
memo = a

Me.[メモ欄] = memo
MsgBox = memo

上記コードで、代入式の左辺の関数呼び出しは、バリアント型またはオブジェクト型の値を返さなければなりませんとなります。

このエラー方法の解消方法を、お手数ですが、ご教示していただけないでしょうか?

Aベストアンサー

下にある「使用例」見てもわかりませんか?

QACCESS VBAのMSGBOXで以降の処理を中止したい時・・・。

こんばんは。

ACCESS VBAにて、MSGBOXの返り値がVBNOの際に以降の処理を中止したいと思っています。

以前はEndと記載していましたが、グローバル変数の値が初期化されたり弊害があると言われたためExit functionやExit subに置き換えた所、そのFunction以降のFunction(元々コマンドボタンクリックでいくつかのPublic Functionが動くようになっています)に処理が移ってしまい困っています。

そもそも書き方に問題があるのかもしれませんが、ご存知の方いたら教えてください。連休中の宿題って感じです。(涙)よろしくお願いします。

Aベストアンサー

大規模に現状のコードを修正しないで済みそうな方法としては、エラー
トラップを利用する方法かと思います。

下記のコードはあくまでテスト用なので、関数は中身のない適当なものです。
読み取ってほしいのは、MsgBox で No が選択された場合にエラーを発生させ、
MainProc のエラーハンドラに戻している点です。

10回「Resume?」に Yes をクリックすると、コード中のコメント(A)により
"SampleFuncA を抜けます" と表示されますが、途中 No をクリックした場合
これが表示されません。つまり、SampleFuncA の実行は途中で終了されます。

Public Const FORCE_BREAK_CODE As Long = 50000

Public gsTest As String

Sub MainProc()

  Dim n As Long
  
  On Error GoTo Err_
  gsTest = "テストです"
  MsgBox "完走しましたよ N:=" & CStr(SampleFuncA(1))

Bye_:
  MsgBox "Public 変数 gsTest:=" & gsTest
  Exit Sub
Err_:
  Select Case Err.Number
    Case FORCE_BREAK_CODE
       MsgBox "ユーザーキャンセル", vbInformation
    Case Else
       MsgBox Err.Description, vbCritical
  End Select
  Resume Bye_
End Sub

' // サンプル関数A
Public Function SampleFuncA(ByVal n As Long) As Long
  While n < 10
    n = SampleFuncB(n)
  Wend
  SampleFuncA = n
  MsgBox "SampleFuncA を抜けます" ' // (A)
End Function

' // サンプル関数B
Public Function SampleFuncB(ByVal n As Long) As Long
  If MsgBox("N:=" & CStr(n), vbYesNo, "Resume?") = vbNo Then
    Err.Raise FORCE_BREAK_CODE '// <--- ココでエラーを発生させる
  End If
  SampleFuncB = n + 1
End Function

大規模に現状のコードを修正しないで済みそうな方法としては、エラー
トラップを利用する方法かと思います。

下記のコードはあくまでテスト用なので、関数は中身のない適当なものです。
読み取ってほしいのは、MsgBox で No が選択された場合にエラーを発生させ、
MainProc のエラーハンドラに戻している点です。

10回「Resume?」に Yes をクリックすると、コード中のコメント(A)により
"SampleFuncA を抜けます" と表示されますが、途中 No をクリックした場合
これが表示されません。つまり、Sample...続きを読む

QIfの条件式(VBAです)

基本的なことで申し訳ありません。

EXCEL VBAのユーザーフォームで
textbox1の値がAかBかCで
なおかつ、textbox2の値が1か2か3の場合
textbox3に○を表示させたいのですが
どう書けばよいのでしょうか?

どなたかご教授お願い致します。

Aベストアンサー

こんな感じになると思います。

If TextBox1.Value = "A" Or TextBox1.Value = "B" Or TextBox1.Value = "C" Then
If TextBox2.Value = "1" Or TextBox2.Value = "2" Or TextBox2.Value = "3" Then
TextBox3.Text = "○"
End If
End If


このQ&Aを見た人がよく見るQ&A

このカテゴリの人気Q&Aランキング

おすすめ情報