現在VBAでExcelシートの内容をXML出力するマクロを作成しています。
マクロ実行で出力自体は可能なのですがこれから列(階層)が増えていく予定らしく下記のデータ取得時のコードを階層がいくつあっても大丈夫なように汎用化対応が必要なのですがどのように書けばよいのでしょう・・。
「今どこの階層にあるデータを取得している」をループ処理で記述すれば良いと考えていますが記述の仕方がわからないです・・。
よろしくお願いします・・。
VBA
1 Dim x As String 2 Dim y As String 3 Dim Row As Integer 4 Dim Low As Integer 5 Dim Col As Integer 6 Dim Col1 As Integer 7 Dim xmlObj As MSXML2.IXMLDOMNode 8 Dim xmlObj1 As MSXML2.IXMLDOMNode 9 Dim xmlObj2 As MSXML2.IXMLDOMNode 10 Dim xmlObj3 As MSXML2.IXMLDOMNode 11 Dim xmlObj4 As MSXML2.IXMLDOMNode 12 Dim xmlObj5 As MSXML2.IXMLDOMNode 13 Dim xmlObj6 As MSXML2.IXMLDOMNode 14 Dim xmlObj7 As MSXML2.IXMLDOMNode 15 Dim xmlDoc As MSXML2.DOMDocument60 16 17(中略) 18 19 'データ取得 20Do While Col < Col1 21 If TargetWorkbook.Worksheets(SheetName).Cells(Row, Col).Value <> "" Then 22 x = TargetWorkbook.Worksheets(SheetName).Cells(Row, Col1).Value 23 y = TargetWorkbook.Worksheets(SheetName).Cells(Row, Col2).Value 24 If Col = 2 Then 25 Set xmlObj = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 26 xmlObj.Text = y 27 ElseIf Col = 3 Then 28 Set xmlObj1 = xmlObj.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 29 xmlObj1.Text = y 30 ElseIf Col = 4 Then 31 Set xmlObj2 = xmlObj1.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 32 xmlObj2.Text = y 33 ElseIf Col = 5 Then 34 Set xmlObj3 = xmlObj2.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 35 xmlObj3.Text = y 36 ElseIf Col = 6 Then 37 Set xmlObj4 = xmlObj3.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 38 xmlObj4.Text = y 39 ElseIf Col = 7 Then 40 Set xmlObj5 = xmlObj4.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 41 xmlObj5.Text = y 42 ElseIf Col = 8 Then 43 Set xmlObj6 = xmlObj5.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 44 xmlObj6.Text = y 45 ElseIf Col = 9 Then 46 Set xmlObj7 = xmlObj6.appendChild(xmlDoc.createNode(NODE_ELEMENT, x, "")) 47 xmlObj7.Text = y 48 End If 49 50 Col = 2 51 Row = Row + 1 52 Else: Col = Col + 1 53 End If 54Loop
回答のついた質問を返事もせず何か月も放置しているのはなぜですか?
回答3件
あなたの回答
tips
プレビュー