3

その日のご挨拶、

こんにちは、私はvb6.0を使用する初心者です。私は次のコードを使用していて、「ユーザー定義タイプが定義されていません」を取得しています。コードは以下です。エラーが発生する行が強調表示されています。親切に助けてください。いくつかの参照またはコンポーネントを追加する必要がありますか?あなたのタイムリーで親切な助けは私にとってはるかに役立つでしょう

Public Sub LoadDocument() 
    Dim xDoc As MSXML2.DOMDocument
    Set xDoc = New MSXML2.DOMDocument 
    xDoc.async = False 
    xDoc.validateOnParse = False
    If xDoc.Load("C:\Users\284582\Desktop\XML1.xml") Then
            DisplayNode xDoc.ChildNodes, 0 
    End If 
End Sub    

' Error on this line'
Public Sub DisplayNode(ByRef Nodes As MSXML.IXMLDOMNodeList, _
           ByVal Indent As Integer)    

    Dim xNode As MSXML.IXMLDOMNode
    Indent = Indent + 2    
    For Each xNode In Nodes
        If xNode.NodeType = NODE_TEXT Then

            Debug.Print Space$(Indent) & xNode.ParentNode.nodeName & _
                ":" & xNode.NodeValue 
        End If    

        If xNode.HasChildNodes Then   
            DisplayNode xNode.ChildNodes, Indent  
        End If    
    Next xNode   
End sub    
4

2 に答える 2

3

MSXML2.IXMLDOMNodeListはありませんMSXML.IXMLDOMNodeList

于 2012-12-08T15:03:46.550 に答える
1

ライブラリが参照から欠落している可能性があります。これを試して。

MSXML2 を手動で追加する

1. Open MS Access.
2. Database Tools ribbon
3. Visual Basic  ribbon item (icon)
4. Double-click on any module to open it.

5. Tools menu
6. References…
7. Find  Microsoft XML, v6.0. is in the list
    a. If in list but not checked, check it and click [OK].
    b. If not in the list: 
        i. click [Browse…] and add "c:\windows\system32\msxml6.dll"
8. [OK] your way back to the Visual Basic window.
9. Close the Visual Basic Window.  You should be good to go.

プログラムによる MSXML2 の追加 次のサブルーチンと関数を追加します。サブを実行します。必要に応じてサブを編集してパスを含めます。

ライブラリ内の壊れた参照を確認するプログラムによる参照の追加から適応

Sub CheckXmlLibrary()
' This refers to your VBA project.
    Dim chkRef As Reference, RetVal As Integer  ' A reference.
    Dim foundWord As Boolean, foundExcel As Boolean, foundXml As Boolean
    foundWord = False
foundExcel = False
    foundXml = False

' Check through the selected references in the References dialog box.
    For Each chkRef In References
' If the reference is broken, send the name to the Immediate Window.
        If chkRef.IsBroken Then
           Debug.Print chkRef.Name
        End If
'copy and repeat the next 2 if statements as needed for additional libraries.
    If InStr(UCase(chkRef.FullPath), UCase("msxml6.dll")) <> 0 Then
                foundXml = True
            End If
    Next

    If (foundXml = False) Then
            'References.AddFromFile ("C:\Windows\System32\msxml6.dll")  <-- For other than XML, modify this line and comment out line below.
            RetVal = AddMsXmlLibrary
            If RetVal = 0 Then MsgBox "Failed to load XML Library (msxml6.dll).  XML upload/download will not work."
    End If

End Sub

Chris Advena によって開発されたライブラリに XML 参照を追加します。洞察を提供してくれたhttp://allenbrowne.com/ser-38.htmlに感謝します。

Public Function AddMsXmlLibrary(Optional PathFileExtStr As String = "C:\Windows\System32\msxml6.dll") As Integer
On Error GoTo FoundError
AddMsXmlLibrary = 1
References.AddFromFile (PathFileExtStr)

AllDone:
    Exit Function
FoundError:
    On Error Resume Next
    AddMsXmlLibrary = 0
    On Error GoTo 0
End Function
于 2014-04-30T21:54:11.373 に答える