在 A1、A2、A3...A16000 的一个单元格中我拥有 XML 的整个上下文。
示例:一张发票的整个 XML 位于 A1 中,下一张发票位于 A2 中,依此类推。
我怎样才能将每个单元格的上下文保存到单独的 XML 文件中?
我尝试使用“filterxml”直接从单元格中提取相关数据,但是当 inovice 包含多个项目行时我遇到了麻烦。
答案1
假设整个 XML 确实是有效的 XML 格式,并且您只需将每个单元导出为其自己的文件,则可以使用以下 VBA:
Sub ExportCellsToXMLFiles()
On Error GoTo err:
Dim OutputFolder: OutputFolder = "D:\Test\XML\" 'Specify a valid dir to output to - make sure you include the trailing slash.
Dim objFSO: Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objFile
Dim Count: Count = 1 'Row number to start on
Do
Set objFile = objFSO.CreateTextFile(OutputFolder & "Invoice_" & Count & ".xml", False, True) ' You can change the file names if needed here
objFile.Write (Cells(Count, 1).Value)
objFile.Close
Count = Count + 1
Loop Until IsEmpty(Cells(Count, 1).Value)
err:
Set objFile = Nothing
Set objFSO = Nothing
End Sub
编辑:我认为某些程序可能无法正确解释它,因为它们需要 UTF-8 字符集。请尝试以下代码:
Sub ExportCellsToXMLFiles()
On Error GoTo err:
Dim OutputFolder: OutputFolder = "D:\Test\XML\"
Dim fsT As Object
Dim Count: Count = 1
Do
Set fsT = CreateObject("ADODB.Stream")
fsT.Type = 2
fsT.Charset = "utf-8"
fsT.Open
fsT.WriteText (Cells(Count, 1).Value)
fsT.SaveToFile OutputFolder & "Invoice_" & Count & ".xml", 2
Count = Count + 1
Loop Until IsEmpty(Cells(Count, 1).Value)
err:
Set fsT = Nothing
End Sub