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

MS Access使用Mid和Instr函数提取事件字符串中文件路径的问题

问题排查与解决

错误原因

你写的Mid函数第三个参数(截取长度)的计算逻辑存在错误:
Mid函数的语法为Mid(待处理字符串, 起始截取位置, 截取长度),你当前使用的长度计算公式InstrRev(event,"Handle ID:") - Len(mid(event,InstrRev(event,"Handle ID:")))的运算结果并非「Object Name: 结束位置」到「Handle ID: 起始位置」之间的距离,因此会多截取到后面的多余字符。
另外如果待处理字符串中仅存在一处Handle ID:,使用Instr正向查找即可,无需使用InstrRev反向查找。

正确实现逻辑

先计算两个关键位置,再求截取长度即可:

  1. 计算Object Name: 的结束位置,也就是文件路径的起始位置:objPathStart = Instr(event, "Object Name: ") + 13
  2. 计算Handle ID:的起始位置,也就是文件路径的结束位置的下一位:handleIdStart = Instr(event, "Handle ID:")
  3. 截取长度为两个位置的差值:objPathLength = handleIdStart - objPathStart

最终正确的代码为:

' 直接截取
Mid(event, Instr(event, "Object Name: ") + 13, Instr(event, "Handle ID:") - (Instr(event, "Object Name: ") + 13))

' 如果需要去除路径前后可能存在的多余空格,可套一层Trim
Trim(Mid(event, Instr(event, "Object Name: ") + 13, Instr(event, "Handle ID:") - (Instr(event, "Object Name: ") + 13)))

验证效果

用你给出的示例字符串测试,以上代码可以准确提取出c:\temp\MyFile.doc,不会残留多余字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:36:00