none
关于 UsedRange.Value(xlRangeValueMSPersistXML) 的Bug RRS feed

  • 问题

  • 我使用了以下代码来获取表格的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 表示形式。

    2019年7月29日 4:57