【发布时间】:2021-09-24 04:35:25
【问题描述】:
我要在 Excel 中完成的工作如下: Excel 表具有固定值:(键 A1:C1 / 值 A2:C2)和数据:(A5:变量) 所需的输出是每个 DATA 值的不同 XML 文件。
我无法找出正确的 vbscript 语法。但它应该这样做:
- 将固定值放入关联数组或字典中
- 循环遍历数据(直到空行)
- 创建结合固定值和数据的新结构
- 输出到单独的 XML 文件(每个数据元素的新文件)。
谁能用 VBA 语法显示这个?
【问题讨论】:
我要在 Excel 中完成的工作如下: Excel 表具有固定值:(键 A1:C1 / 值 A2:C2)和数据:(A5:变量) 所需的输出是每个 DATA 值的不同 XML 文件。
我无法找出正确的 vbscript 语法。但它应该这样做:
谁能用 VBA 语法显示这个?
【问题讨论】:
注意:这不是完整的答案,而是主要思想......
Option Explicit
Sub ExportToXml()
Dim i As Integer, j As Integer
Dim wsh As Worksheet, sTmp As String
Set wsh = ThisWorkbook.Worksheets(1)
i = 5
Do While wsh.Range("A" & i) <> ""
Debug.Print "=== new file here ==="
'key1 & key2
sTmp = ""
For j = 0 To 1
sTmp = sTmp & "<" & wsh.Range("A1").Offset(ColumnOffset:=j) & ">" & wsh.Range("A2").Offset(ColumnOffset:=j) & _
"</" & wsh.Range("A1").Offset(ColumnOffset:=j) & ">" & vbCrLf
Next j
'data
sTmp = sTmp & "<" & wsh.Range("A4") & ">" & wsh.Range("A" & i) & "</" & wsh.Range("A4") & ">" & vbCrLf
'key 3
sTmp = sTmp & "<" & wsh.Range("A1").Offset(ColumnOffset:=2) & ">" & wsh.Range("A2").Offset(ColumnOffset:=2) & _
"</" & wsh.Range("A1").Offset(ColumnOffset:=2) & ">"
Debug.Print sTmp
Debug.Print
i = i + 1
Loop
Set wsh = Nothing
End Sub
结果:
=== new file here ===
<KEY1>VAL1</KEY1>
<KEY2>VAL2</KEY2>
<DATA>DATA1</DATA>
<KEY3>VAL3</KEY3>
=== new file here ===
<KEY1>VAL1</KEY1>
<KEY2>VAL2</KEY2>
<DATA>DATA2</DATA>
<KEY3>VAL3</KEY3>
=== new file here ===
<KEY1>VAL1</KEY1>
<KEY2>VAL2</KEY2>
<DATA>DATA3</DATA>
<KEY3>VAL3</KEY3>
您需要做的就是根据您的需要更改脚本。 ;)
【讨论】: