【问题标题】:Excel VBA: ranges to xml filesExcel VBA:范围到 xml 文件
【发布时间】:2021-09-24 04:35:25
【问题描述】:

我要在 Excel 中完成的工作如下: Excel 表具有固定值:(键 A1:C1 / 值 A2:C2)和数据:(A5:变量) 所需的输出是每个 DATA 值的不同 XML 文件。

我无法找出正确的 vbscript 语法。但它应该这样做:

  1. 将固定值放入关联数组或字典中
  2. 循环遍历数据(直到空行)
  3. 创建结合固定值和数据的新结构
  4. 输出到单独的 XML 文件(每个数据元素的新文件)。

谁能用 VBA 语法显示这个?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    注意:这不是完整的答案,而是主要思想......

    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>
    

    您需要做的就是根据您的需要更改脚本。 ;)

    【讨论】:

    • 感谢 Maciej。这真是一个好的开始。我可以从这里扩展。
    • 不客气。顺便说一句:最好的感谢是当您接受答案并投票时。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-09
    • 2019-06-16
    • 2015-08-03
    相关资源
    最近更新 更多