You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA读取元数据时使用Cdate强制统一为DD/MM/YY英国日期格式

你可以在写入单元格前增加日期识别、转换逻辑即可实现需求,修改后的完整代码如下:

Sub 读取文件元数据()
    Dim sFile As Object, obja
    Dim oShell As Object, oDir As Object
    Dim iRow As Long, i As Integer

    '创建Shell对象与命名空间
    Set oShell = CreateObject("Shell.Application")
    '请将FILEPATH替换为你实际的文件夹路径
    Set oDir = oShell.Namespace("FILEPATH")
    ActiveSheet.Cells.ClearContents

    '遍历根目录下所有文件/文件夹
    iRow = 1

    For Each sFile In oDir.Items
        iRow = iRow + 1
        
        '遍历0-5号属性
        For i = 0 To 5
            
            '读取文件属性值
            obja = oDir.GetDetailsOf(sFile, i)
            If obja <> "" Then
                iRow = iRow + 1
                '写入属性名到A列
                ActiveSheet.Range("A" & iRow) = oDir.GetDetailsOf(oDir, i)
                '判断属性值是否为可识别的日期格式
                If IsDate(obja) Then
                    '转成标准日期类型后格式化为DD/MM/YY英国格式
                    ActiveSheet.Range("B" & iRow) = Format(CDate(obja), "dd/mm/yy")
                    '设置单元格格式避免Excel自动篡改日期显示
                    ActiveSheet.Range("B" & iRow).NumberFormat = "dd/mm/yy"
                Else
                    '非日期内容直接写入B列
                    ActiveSheet.Range("B" & iRow) = obja
                End If
            End If
        Next
    Next

    MsgBox "处理完成"
End Sub

改动说明

  • 新增IsDate()逻辑校验属性值是否为日期,避免非日期内容调用CDate报错
  • 先通过CDate()将字符串格式的日期转为VBA标准日期类型,再用Format()强制输出为DD/MM/YY的英国日期格式
  • 额外添加了单元格格式设置步骤,防止后续编辑时Excel自动将日期识别为美国格式

内容的提问来源于stack exchange,提问作者ScottJBK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 16:24:02