2
私はVBで書かれたマクロにms excelを使用しています。私はxmlファイルを読んでいます。以下のxmlの例を参照してください。Excelマクロで欠落しているXMLノードを処理する方法
<document>
<element>
<fname></fname>
<age></age>
</element>
<element>
<fname></fname>
</element>
</document>
年齢= Nothingの場合は動作しません。私は、 "オブジェクトはプロパティまたはメソッドをサポートしていません"と設定しています。下のマクロコードの例を参照してください。
Sub TestXML()
Dim mainWorkBook As Workbook
Set mainWorkBook = ActiveWorkbook
mainWorkBook.Sheets("Sheet1").Range("A:E").Clear
Dim XDoc As Object
Set XDoc = CreateObject("MSXML2.DOMDocument")
XDoc.async = False
XDoc.validateOnParse = False
XDoc.Load ("C:\MyUnzipFolder\XML_test.XML")
Set fname= XDoc.SelectNodes("/Document/element/fname/text()")
Set age = XDoc.SelectNodes("/Document/element/age/")
If age Is Nothing Then
MsgBox ("element not found.")
Else
MsgBox ("element found.")
End If
Set XDoc = Nothing
End Sub
まだそれが仕事を得ることができます。私はあなたの以前の提案だけでなく、運を試してみました。私はスプレッドシートの列にバリュー年齢を表示しようとしています。何もしない場合は、セルを空白にしてください。 – Jag
別のテストを行いました。私は次のエラーで再開しようとしました。それはfname列100行を入力し、ノードは80で満たされなくなります(ノードが1つだけ欠落しています)。技術的な年齢のループは1つの行をスキップしてから投入を開始する必要があります。エラーが発生した後に残りの部分が空白になります。それ以上のアイデア? – Jag
@Jag - コード内のXPathで 'age'の後に'/'を削除しましたか?それが原因であるかどうかは分かりませんが、その場合は... –