以下代码工作正常,但有一种情况除外,即ResetDate对多行具有相同的值。
VBA代码(我不是专家)
Sub testXLStoXML()
sTemplateXML = _
"<?xml version='1.0'?>" + vbNewLine + _
"<E>" + vbNewLine + _
" <ResetDate>" + vbNewLine + _
" </ResetDate>" + vbNewLine + _
" <ValueDate>" + vbNewLine + _
" </ValueDate>" + vbNewLine + _
" <MaturityD>" + vbNewLine + _
" </MaturityD>" + vbNewLine + _
" <Rate>" + vbNewLine + _
" </Rate>" + vbNewLine + _
" <Quantity>" + vbNewLine + _
" </Quantity>" + vbNewLine + _
" <ID>" + vbNewLine + _
" </ID>" + vbNewLine + _
"</E>" + vbNewLine
Set doc = CreateObject("MSXML2.DOMDocument")
doc.async = False
doc.validateOnParse = False
doc.resolveExternals = False
With ActiveWorkbook.Worksheets(1)
lLastRow = .UsedRange.Rows.Count
For lRow = 2 To lLastRow
sFile = Format(.Cells(lRow, 1).Value, "DD-MMM-YY")
sBirthdate = Format(.Cells(lRow, 2).Value, "DD-MMM-YY")
sAmount = Format(.Cells(lRow, 3).Value, "DD-MMM-YY")
sRate = .Cells(lRow, 4).Value
sQuantity = .Cells(lRow, 5).Value
sID = .Cells(lRow, 6).Value
doc.LoadXML sTemplateXML
doc.getElementsByTagName("ResetDate")(0).appendChild doc.createTextNode(ResetDate)
doc.getElementsByTagName("ValueDate")(0).appendChild doc.createTextNode(ValueDate)
doc.getElementsByTagName("MaturityD")(0).appendChild doc.createTextNode(MaturityD)
doc.getElementsByTagName("Rate")(0).appendChild doc.createTextNode(sRate)
doc.getElementsByTagName("Quantity")(0).appendChild doc.createTextNode(sQuantity)
doc.getElementsByTagName("ID")(0).appendChild doc.createTextNode(sID)
doc.Save sFile
Next
End With
End Sub
正如您所看到的,我仅将日期的1个文件作为输出:
有什么建议吗?提前谢谢
删除文档。保存sFile并替换为以下代码:
Dim x as Long
x = Application.CountIf(.Range("A2:A" & lrow), .Cells(lRow, 1))
If x > 1 Then doc.Save sFile & "_" & x Else doc.Save sFile
因此,您的修订代码是:
Sub testXLStoXML()
Dim x as Long
sTemplateXML = _
"<?xml version='1.0'?>" + vbNewLine + _
"<E>" + vbNewLine + _
" <ResetDate>" + vbNewLine + _
" </ResetDate>" + vbNewLine + _
" <ValueDate>" + vbNewLine + _
" </ValueDate>" + vbNewLine + _
" <MaturityD>" + vbNewLine + _
" </MaturityD>" + vbNewLine + _
" <Rate>" + vbNewLine + _
" </Rate>" + vbNewLine + _
" <Quantity>" + vbNewLine + _
" </Quantity>" + vbNewLine + _
" <ID>" + vbNewLine + _
" </ID>" + vbNewLine + _
"</E>" + vbNewLine
Set doc = CreateObject("MSXML2.DOMDocument")
doc.async = False
doc.validateOnParse = False
doc.resolveExternals = False
With ActiveWorkbook.Worksheets(1)
lLastRow = .UsedRange.Rows.Count
For lRow = 2 To lLastRow
sFile = Format(.Cells(lRow, 1).Value, "DD-MMM-YY")
sBirthdate = Format(.Cells(lRow, 2).Value, "DD-MMM-YY")
sAmount = Format(.Cells(lRow, 3).Value, "DD-MMM-YY")
sRate = .Cells(lRow, 4).Value
sQuantity = .Cells(lRow, 5).Value
sID = .Cells(lRow, 6).Value
doc.LoadXML sTemplateXML
doc.getElementsByTagName("ResetDate")(0).appendChild doc.createTextNode(ResetDate)
doc.getElementsByTagName("ValueDate")(0).appendChild doc.createTextNode(ValueDate)
doc.getElementsByTagName("MaturityD")(0).appendChild doc.createTextNode(MaturityD)
doc.getElementsByTagName("Rate")(0).appendChild doc.createTextNode(sRate)
doc.getElementsByTagName("Quantity")(0).appendChild doc.createTextNode(sQuantity)
doc.getElementsByTagName("ID")(0).appendChild doc.createTextNode(sID)
x = Application.CountIf(.Range("A2:A" & lrow), .Cells(lRow, 1))
If x > 1 Then doc.Save sFile & "_" & x Else doc.Save sFile
Next lrow
End With
End Sub
我正在尝试为Excel文件中的每一行创建一个单独的XML文档。第1行列出了标记名,A列标识了每行的文档标题。 我在VBA方面相当缺乏经验,但这正是我迄今为止根据对类似问题的多个答案得出的结论。 我还没有完成“GetElementsByTagName”部分,因为该部分导致了问题。对于下一行,我得到错误“Object variable or With block variable not set”。
我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?
首先,让我说这个网站是天赐之物! 我有一系列每月B2:AS40的数据。月份在A2:AS2中,A2:A40中是姓名列表,所有这些都在“Sheet1”中 经过之前在这里的一些搜索,我想出了以下内容,脚本为每一行制作一个新图表,创建一个标题,并以6个月的间隔放入MajorGridline,但是没有绘制数据。我这辈子都不知道为什么!! 请帮帮忙 样本数据: 将脚本更改为以下内容后: 脚本不会在每次运行时都
问题内容: 我想从表中的数据创建json。表看起来像这样: 我正在使用FOR JSON PATH,这很不错: 但此查询的返回值是一行中的三个串联的json: 我需要每一行都是一个单独的json,像这样: 我正在尝试使用拆分函数(CROSS APPLY),该函数需要使用分隔符作为参数,但这不是一个可靠的解决方案,因为json可以进一步扩展或分支,并且可以不分离整个json,而是分离json内部的js
我希望能够从外部文件的值中筛选excel电子表格中的列值。 例如:列A列出了在计算机上运行的一堆程序。我在一个. txt或. csv文件中有一个“认可程序”的白名单。 如果单元格包含与. csv文件中的一个条目匹配的值,我想编写一个脚本,将从“列A”中删除条目。 例如:“A列”包含数百条从“Adobe”到“Xerox”的条目。我有我的“认可软件”清单,其中包括Adobe和Xerox。我希望Exce
数据 第一页用于数据输入。每行代表一张服务票。每列将表示有关服务事件的数据,如序列号或型号。 期望的结果 对于包含特定字段(列a ~“票证号”)中数据的每一行,Excel将基于模板创建一个新的工作表(服务票证),并将相应行中的数据放入指定的单元格中。 提前感谢您提供的任何帮助。