VBA调用DateCreated属性获取的文件日期戳无法参与日期运算问题求助
错误原因&解决方案
- 首先修正内置函数调用错误
VBA 中Now()是原生内置函数,不需要加Application.Function前缀,你写的Application.Function.Now()本身属于错误写法,直接调用Now()即可。 - 强制类型转换避免隐式格式不兼容问题
DateCreated属性返回的是变体日期类型,部分场景下会被识别为字符串导致运算失败,用CDate()函数强制转换为日期类型即可正常参与运算。 - 更稳妥的日期差计算推荐使用
DateDiff函数,避免日期格式兼容问题,适配不同系统区域设置的场景:
' 正确声明与计算示例 Dim FileDateStamp As Date ' 此处保留你之前获取FileDateStamp的赋值逻辑 ' 方案1:直接日期运算 Dim FileAge As Double ' 运算结果单位为天,小数部分对应时分秒 FileAge = Now() - CDate(FileDateStamp) ' 方案2:DateDiff函数更稳定,按需指定返回单位 ' 计算相差天数 FileAge = DateDiff("d", FileDateStamp, Now()) ' 计算相差小时将第一个参数改为"h",相差分钟改为"n",相差秒改为"s"
其他说明
- 你之前尝试的
Dim FileDateStamp as Text写法错误,VBA 中文本类型关键字为String,字符串类型无法直接参与日期运算。 - 你调用日期拆分的正确写法为
DateSerial(Year(FileDateStamp), Month(FileDateStamp), Day(FileDateStamp)),可提取创建日期的纯日期部分,过滤时分秒信息。
内容的提问来源于stack exchange,提问作者RobinClay
相关产品推荐
相关产品推荐

