
実現したいこと
エクセルファイルからXMLを作成するVBAを作成中です。
具体的には
A9にセル9 P9にCell9
B10にセル10 P10にCell10
C11にセル11 P11にCell11
C12にセル12 P12にCell12
B13にセル13 P13にCell13
の値があった場合
下記のようなXMLを作成したいです
<Cell9 Japanese="セル9">
<Cell10 Japanese="セル10">
<Cell11 Japanese="セル11" />
<Cell12 Japanese="セル12" />
</Cell10>
<Cell13 Japanese="セル13" />
</Cell9>
P列に英語の値が入りA列~O列の一か所に日本語の値が入ります
そこで下記のようなソースを作成しましたが
A列~O列の値を読み込むことができません
Set currentColumn = ws.Range(startColumn & rowIndex & ":" & endColumn & rowIndex).Columns(columnIndex + 1)
でA列~O列で空白以外の値が存在している箇所を取得できる想定なのですが取得できません。
何が間違っているのでしょうか?
ご教授をお願い致します。
該当のソースコード
VBA
1Sub CreateXMLElements(ws As Worksheet, xmlDoc As Object, parentElement As Object) 2 Dim lastRow As Long 3 lastRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row 4 5 If lastRow >= 9 Then ' 行番号が10行目から始まる場合、lastRowが9以上である必要があります。 6 7 Dim rowIndex As Long 8 For rowIndex = 9 To lastRow Step 1 ' 行番号が10行目から始まる場合、rowIndexは9から始まる必要があります。 9 10 Dim elementName As String 11 Dim elementValue As String 12 13 elementName = ws.Cells(rowIndex, "P").value 14 elementValue = ws.Cells(rowIndex, "A").value 15 16 If elementName <> "" Then 17 Dim element As Object 18 Set element = xmlDoc.CreateElement(elementName) 19 element.setAttribute "Japanese", elementValue 20 21 parentElement.appendChild element 22 23 Dim startColumn As String 24 startColumn = "A" 25 Dim endColumn As String 26 endColumn = "O" 27 28 Dim currentColumn As Range 29 Dim columnIndex As Integer 30 columnIndex = 0 31 Set currentColumn = ws.Range(startColumn & rowIndex & ":" & endColumn & rowIndex).Columns(columnIndex + 1) 32 Do While Not IsEmpty(currentColumn) 33 columnIndex = columnIndex + 1 34 elementName = ws.Cells(rowIndex, "P").value 35 elementValue = ws.Cells(rowIndex, columnIndex).value 36 If elementValue <> "" Then 37 Dim childElement As Object 38 Set childElement = xmlDoc.CreateElement(elementName) 39 childElement.setAttribute "Japanese", elementValue 40 element.appendChild childElement 41 End If 42 43 Set currentColumn = ws.Range(startColumn & rowIndex & ":" & endColumn & rowIndex).Columns(columnIndex + 1) 44 Loop 45 End If 46 Next rowIndex 47 End If 48End Sub


回答1件
あなたの回答
tips
プレビュー