我使用了以下代码来获取表格的Xml格式
Sub test()
MsgBox Sheet1.UsedRange.Value(xlRangeValueMSPersistXML)
End Sub
正常情况下,获取到的日期格式与excel显示的日期格式是没有关系的。也就是说设置excel显示的日期格式为任意日期格式,通过UsedRange.Value(xlRangeValueMSPersistXML)取出来的值都是一样。 格式为:YYYY-MM-ddThh:mm:ss
效果如下:
<xml xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<x:PivotCache>
<x:CacheIndex>1</x:CacheIndex>
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly">
<s:attribute type="Col1"/>
<s:extends type="rs:rowbase"/>
</s:ElementType>
<s:AttributeType name="Col1" rs:name="字段1">
<s:datatype dt:type="dateTime"/>
</s:AttributeType>
</s:Schema>
<rs:data>
<z:row Col1="2019-01-01T00:00:00"/>
</rs:data>
</x:PivotCache>
</xml>
不正常的情况下,当在下方单元格加入两个中文字符后,取出来的值格式就不再是YYYY-MM-ddThh:mm:ss ,而是和Excel 显示的格式一模一样,这个不是我想要的结果。效果如下:
<xml xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"
xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema">
<x:PivotCache>
<x:CacheIndex>1</x:CacheIndex>
<s:Schema id="RowsetSchema">
<s:ElementType name="row" content="eltOnly">
<s:attribute type="Col1"/>
<s:extends type="rs:rowbase"/>
</s:ElementType>
<s:AttributeType name="Col1" rs:name="字段1">
<s:datatype dt:maxLength="255"/>
</s:AttributeType>
</s:Schema>
<rs:data>
<z:row Col1="2019/1/1"/>
<z:row/>
<z:row Col1="测试"/>
</rs:data>
</x:PivotCache>
</xml>
请问这个BUG,有办法避免吗?
谢谢!
xlRangeValueMSPersistXML |
12 |
以 XML 格式返回指定Range对象的 recordset 表示形式。
|