Excel 使用VBA导入XML的正确日期格式

Excel 使用VBA导入XML的正确日期格式,excel,vba,Excel,Vba,我目前正在制作一个电子表格,用于分析我们使用的在线t-card系统导出的数据。这将以XML格式导出其所有数据。 要导入这些数据,我使用宏将其全部保存到另一个工作表中,并将大多数列转换为值,因为它们都存储为文本。然而,我遇到的问题是将日期列中的文本转换为实际日期。我正在使用此代码转换为日期: With ActiveSheet.UsedRange.Columns("U").Cells .NumberFormat = "dd/mm/yyyy" .Value = .Value End With 虽然这

我目前正在制作一个电子表格,用于分析我们使用的在线t-card系统导出的数据。这将以XML格式导出其所有数据。 要导入这些数据,我使用宏将其全部保存到另一个工作表中,并将大多数列转换为值,因为它们都存储为文本。然而,我遇到的问题是将日期列中的文本转换为实际日期。我正在使用此代码转换为日期:

With ActiveSheet.UsedRange.Columns("U").Cells
.NumberFormat = "dd/mm/yyyy"
.Value = .Value
End With
虽然这适用于日期大于12的某些日期,但对于日期等于或小于12的其他日期,它使用日期作为月份,反之亦然

例如,使用以下XML条目时:

<TCard>
      <Ref>*****</Ref>
      <CUSTOMER_NAME>*****</CUSTOMER_NAME>
      <ORDER_NUMBER>*****</ORDER_NUMBER>
      <ACCOUNT_NUMBER>*****</ACCOUNT_NUMBER>
      <ITEM_NUMBER_DELIVERY_AREA>*****</ITEM_NUMBER_DELIVERY_AREA>
      <Description>PFC 230 X 90 / 5 @ 12.2</Description>
      <Colour>Stock Bar PP</Colour>
      <SlotPosition>35</SlotPosition>
      <RowTitle></RowTitle>
      <AssignedDate>20/02/2017</AssignedDate>
      <EndDate />
      <AssignedColumnTitle>Monday</AssignedColumnTitle>
      <Locked>False</Locked>
      <Order_Date>17/02/2017</Order_Date>
      <Due_Date>21/02/2017</Due_Date>
      <Weight_kg>1972</Weight_kg>
      <DrillSaw_Time>-</DrillSaw_Time>
      <Blaster_Time>-</Blaster_Time>
      <Saw_Time>-</Saw_Time>
    </TCard>

*****
*****
*****
*****
*****
PFC 230 X 90/5@12.2
棒料
35
20/02/2017
星期一
假的
17/02/2017
21/02/2017
1972
-
-
-
当宏运行时,该条目的指定日期为2017年2月20日,这是正确的,但是在另一个条目上,如果指定日期为2017年3月8日(2017年3月8日),宏会将其更改为2017年8月3日(2017年8月3日)

不幸的是,我不认为建议使用修剪输入的其他方法在每个月的12号起作用是正确的

宏是否有办法将以文本形式存储的日期仅从XML更改为DD/MM/YYYY格式


提前道歉如果我明显遗漏了什么,我只为这个项目学习了基本的VBA Nessacy

嗨,Harry,在你将数据写入工作表后,为什么不将其作为日期写入工作表呢?请看一下函数,如果您查看备注部分,我认为您会发现您所经历的行为的罪魁祸首,但必须在将值写入工作表单元格之前完成,否则您需要更改windows区域设置以匹配xml文档中的日期格式。顺便说一下,这种日期格式对于xml来说是非标准的。也许它已经改变了,但我最后一次查看推荐的日期格式是带有可选时区标记的
yyy-mm-ddThh:mm:ss
。DateValue正是我所需要的,谢谢。我目前正在为日期创建新列,改为使用这些列。由于导入的数据存储在另一个工作表上,因此如果数据凌乱也没什么大不了的。至于区域设置,我们使用的me和tcard系统都位于英国境内,因此这不是问题,但感谢您指出这一点。