文件已存在但调用fso.OpenTextFile时出现错误5的技术求助
VBScript OpenTextFile 错误5(无效的过程调用或参数)解决方法
问题重现
尝试访问已存在的文件时触发错误5,代码如下:
Strfilepath="...\query.txt" Set DBs = currentdb() Set fso = CreateObject("Scripting.FilesystemObject") If fso.FileExists(strfilepath) then Set file = fso.opentextfile(strfilepath,ForReading, false, -1) End if StrSqlquery= file.readall File.close
错误发生在fso.opentextfile行。
具体解决步骤
替换为绝对路径
相对路径...\query.txt依赖当前工作目录,可能并非你预期的文件位置。直接使用完整绝对路径(如C:\Projects\query.txt),避免路径解析错误。定义或替换
ForReading常量
VBScript中未默认定义ForReading,直接使用会导致参数无效。两种解决方式:- 提前定义常量:
Const ForReading = 1 - 直接用数值1代替
ForReading:Set file = fso.opentextfile(strfilepath, 1, false, -1)
- 提前定义常量:
检查文件读取权限
确认当前运行脚本的用户对目标文件有读取权限。右键文件→属性→安全面板,添加或调整用户权限。修复逻辑漏洞
若文件不存在(即使你认为存在,也可能有路径拼写错误),file对象未初始化,后续file.readall会报错。将读取、关闭代码移入If块内:Set fso = CreateObject("Scripting.FilesystemObject") If fso.FileExists(strfilepath) then Set file = fso.opentextfile(strfilepath, 1, false, -1) StrSqlquery= file.readall File.close Else MsgBox "文件不存在:" & strfilepath End if调整编码参数
参数-1代表系统默认编码,若文件是UTF-8等特殊编码,可能触发错误。尝试替换为对应编码数值:- ASCII:0
- UTF-8:2
示例:
Set file = fso.opentextfile(strfilepath, 1, false, 2)
内容的提问来源于stack exchange,提问作者Kingsley Obeng
相关产品推荐
相关产品推荐

