VBA-ADO连接CSV文件提示路径无效的-2147467259运行时错误如何解决
问题排查与解决方案
你遇到的错误本质是ACE OLEDB 文本驱动的连接参数配置错误:使用文本驱动查询CSV时,Data Source参数必须填写CSV文件所在的文件夹路径,而非CSV文件的完整路径,文件名需要放在SQL查询语句中指定。
1 修正连接字符串与查询逻辑
正确的配置规则:
Data Source填CSV所在的文件夹,末尾加反斜杠- SQL查询语句中写CSV文件名,带扩展名,文件名包含特殊字符时加方括号包裹
修正后的代码示例:
Sub test() Dim myConn As New ADODB.Connection Dim recSet As New ADODB.Recordset Dim folderPath As String Dim connStrng As String Dim qryStrng As String ' 仅填CSV所在的文件夹路径,末尾保留反斜杠 folderPath = "P:\myDocs\" ' 修正后的连接字符串 connStrng = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & folderPath _ & ";Extended Properties=""text;HDR=YES;FMT=Delimited;""" ' 查询语句中指定CSV文件名 qryStrng = "SELECT * FROM [FileName.csv]" myConn.Open connStrng Set recSet = myConn.Execute(qryStrng) ' 后续处理逻辑 ' ... ' 释放资源 recSet.Close myConn.Close Set recSet = Nothing Set myConn = Nothing End Sub
2 验证路径有效性与权限
- 确认
P:\myDocs\路径真实存在:直接在Windows资源管理器地址栏输入该路径,验证可正常打开 - 如果P盘是网络映射盘,可替换为UNC路径测试(例如
\\文件服务器地址\共享名\myDocs\),避免管理员权限运行Office时映射盘不识别的问题 - 确认当前Windows账号对该文件夹有读取权限,确认
FileName.csv文件未被其他程序独占打开 - 检查文件扩展名是否隐藏:如果系统默认隐藏已知扩展名,要确认文件实际名称不是
FileName.csv.txt
3 验证ACE驱动版本匹配
确认已安装Microsoft Access Database Engine(ACE驱动),且驱动位数和你使用的Office位数完全一致(32位Office对应32位驱动,64位Office对应64位驱动),版本不匹配也会触发路径类报错
内容的提问来源于stack exchange,提问作者OldNick
相关产品推荐
相关产品推荐

