Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml VBA Excel通过转换为Long来提供overlow_Xml_Vba_Excel - Fatal编程技术网

Xml VBA Excel通过转换为Long来提供overlow

Xml VBA Excel通过转换为Long来提供overlow,xml,vba,excel,Xml,Vba,Excel,我不熟悉VBA,并且在excel上使用VBA,并编写宏以导出每行的xml文件(请参见打印屏幕中的示例)。除“SSCC”字段外,所有字段均表示正确的格式。这将返回一个溢出错误 我使用以下代码读取excel工作表并创建xml文件: Sub CustomerOutToXML() sTemplateXML = _ "<?xml version='1.0'?>" + vbNewLine + _ "<ENVELOPE>" + vbNewLine +

我不熟悉VBA,并且在excel上使用VBA,并编写宏以导出每行的xml文件(请参见打印屏幕中的示例)。除“SSCC”字段外,所有字段均表示正确的格式。这将返回一个溢出错误

我使用以下代码读取excel工作表并创建xml文件:

Sub CustomerOutToXML()

 sTemplateXML = _
        "<?xml version='1.0'?>" + vbNewLine + _
        "<ENVELOPE>" + vbNewLine + _
            "<TRANSACTION>" + vbNewLine + _
                "<TYPE>" + vbNewLine + "</TYPE>" + vbNewLine + _
            "</TRANSACTION>" + vbNewLine + _
            "<CONTENT>" + vbNewLine + vbNewLine + _
                "<DATE>" + vbNewLine + "</DATE>" + vbNewLine + _
                "<SSCC>" + vbNewLine + "</SSCC>" + vbNewLine + _
                "<ORDER>" + vbNewLine + "</ORDER>" + vbNewLine + _
            "</CONTENT>" + vbNewLine + _
        "</ENVELOPE>"

 Set doc = CreateObject("MSXML2.DOMDocument")
 doc.async = False
 doc.validateOnParse = False
 doc.resolveExternals = False

 With ActiveWorkbook.Worksheets(9)
  lLastRow = .UsedRange.Rows.Count

  For lRow = 2 To 10
   sFile = "T:\xxx\xxx\CustomerOutXML\CustomerOut" & .Cells(lRow, 1).Value & ".xml"
   Dim sDATE As String
   Dim sSSCC As Long
   Dim sORDER As String

   sDATE = CStr(.Cells(lRow, 2).Value)
   sSSCC = CLng(.Cells(lRow, 3).Value)
   sORDER = CStr(.Cells(lRow, 4).Value)
   sTransactionType = ActiveSheet.Name

   doc.LoadXML sTemplateXML
   doc.getElementsByTagName("DATE")(0).appendChild doc.createTextNode(sDATE)
   doc.getElementsByTagName("TYPE")(0).appendChild doc.createTextNode(sTransactionType)
   doc.getElementsByTagName("SSCC")(0).appendChild doc.createTextNode(sSSCC)
   doc.getElementsByTagName("ORDER")(0).appendChild doc.createTextNode(sORDER)


   doc.Save sFile
  Next

 End With

End Sub
Sub-CustomerOutToXML()
sTemplateXML=_
“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+_
""
Set doc=CreateObject(“MSXML2.DOMDocument”)
doc.async=False
doc.validateOnParse=False
doc.resolveExternals=False
使用Active工作簿。工作表(9)
lLastRow=.UsedRange.Rows.Count
对于lRow=2到10
sFile=“T:\xxx\xxx\CustomerOutXML\CustomerOut”和.Cells(lRow,1).Value和.xml”
将sDATE设置为字符串
变暗sSSCC为长
像绳子一样模糊
sDATE=CStr(.Cells(lRow,2).Value)
sSSCC=CLng(.Cells(lRow,3).值)
排序=CStr(.Cells(lRow,4).Value)
sTransactionType=ActiveSheet.Name
doc.LoadXML sTemplateXML
doc.getElementsByTagName(“日期”)(0)。appendChild doc.createTextNode(sDATE)
doc.getElementsByTagName(“类型”)(0).appendChild doc.createTextNode(sTransactionType)
doc.getElementsByTagName(“SSCC”)(0).appendChild doc.createTextNode(sSSCC)
doc.getElementsByTagName(“订单”)(0).appendChild doc.createTextNode(排序器)
保存文件
下一个
以
端接头
EXcel文件示例
您能帮我解决这个问题吗

您需要将sSSCC声明为
String
。然后,不要在行中使用
.Value
sSSCC=.Cells(lRow,3).Value
,而是使用
.Text
(并删除
CLng

Sub-CustomerOutToXML()
sTemplateXML=_
“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+_
“”+vbNewLine+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+“”+vbNewLine+_
“”+vbNewLine+_
""
Set doc=CreateObject(“MSXML2.DOMDocument”)
doc.async=False
doc.validateOnParse=False
doc.resolveExternals=False
使用Active工作簿。工作表(9)
lLastRow=.UsedRange.Rows.Count
对于lRow=2到10
sFile=“T:\xxx\xxx\CustomerOutXML\CustomerOut”和.Cells(lRow,1).Value和.xml”
将sDATE设置为字符串
将sSSCC变暗为字符串“不长”
像绳子一样模糊
sDATE=CStr(.Cells(lRow,2).Value)

sSSCC=.Cells(lRow,3).text“long可以容纳的最大值是
2147483647
使用字符串。当我将其转换为字符串时,我将该值返回10001640001e+19,而不是10001640001000000000@JacobH:您在那里链接了错误的Visual Basic长数据类型。在Microsoft Office VBA中,长度仅为4字节-2147483648到2147483647。“瞧!”阿克塞尔里希特喊道,我的错。同样的原因。溢流
Sub CustomerOutToXML()

 sTemplateXML = _
        "<?xml version='1.0'?>" + vbNewLine + _
        "<ENVELOPE>" + vbNewLine + _
            "<TRANSACTION>" + vbNewLine + _
                "<TYPE>" + vbNewLine + "</TYPE>" + vbNewLine + _
            "</TRANSACTION>" + vbNewLine + _
            "<CONTENT>" + vbNewLine + vbNewLine + _
                "<DATE>" + vbNewLine + "</DATE>" + vbNewLine + _
                "<SSCC>" + vbNewLine + "</SSCC>" + vbNewLine + _
                "<ORDER>" + vbNewLine + "</ORDER>" + vbNewLine + _
            "</CONTENT>" + vbNewLine + _
        "</ENVELOPE>"

 Set doc = CreateObject("MSXML2.DOMDocument")
 doc.async = False
 doc.validateOnParse = False
 doc.resolveExternals = False

 With ActiveWorkbook.Worksheets(9)
  lLastRow = .UsedRange.Rows.Count

  For lRow = 2 To 10
   sFile = "T:\xxx\xxx\CustomerOutXML\CustomerOut" & .Cells(lRow, 1).Value & ".xml"
   Dim sDATE As String
   Dim sSSCC As String  'Not Long
   Dim sORDER As String

   sDATE = CStr(.Cells(lRow, 2).Value)
   sSSCC = .Cells(lRow, 3).text ' <<< Not .Value
   sORDER = CStr(.Cells(lRow, 4).Value)
   sTransactionType = ActiveSheet.Name

   doc.LoadXML sTemplateXML
   doc.getElementsByTagName("DATE")(0).appendChild doc.createTextNode(sDATE)
   doc.getElementsByTagName("TYPE")(0).appendChild doc.createTextNode(sTransactionType)
   doc.getElementsByTagName("SSCC")(0).appendChild doc.createTextNode(sSSCC)
   doc.getElementsByTagName("ORDER")(0).appendChild doc.createTextNode(sORDER)


   doc.Save sFile
  Next

 End With

End Sub