尝试打开与 ADODB 的连接以查询 .csv 文件时,出现“Microsoft Access 数据库引擎无法打开或写入文件”

问题描述 投票:0回答:1

我尝试使用 VBA 对 .csv 文件运行 SQL 查询,但是当我尝试使用本地计算机上的任何目录打开连接时,出现错误

“Microsoft Access 数据库引擎无法打开或写入文件“[目录名称]”。该文件已被其他用户以独占方式打开,或者您需要权限才能查看和写入其数据。”

我没有管理员权限,但我可以正常打开 csv 文件并编辑它们。我需要管理员权限才能打开此连接吗?到目前为止,这是我的代码:

Sub generateStudentOfficeVisitsReport()

Dim currentDir As String

currentDir = VBAProject.ThisWorkbook.Path + "\"
Debug.Print ("Current Dir: '" + currentDir + "'")

Dim filter As String

filter = "SHARRSDiagnostic*.csv"

Dim currentFile As String
currentFile = Dir(currentDir & filter)
Dim cN As ADODB.Connection
Dim RS As ADODB.Recordset
Set cN = New ADODB.Connection
Set RS = New ADODB.Recordset

cN.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & currentDir & """;Extended Properties='Excel 12.0;HDR=YES;IMEX=1';")

RS.ActiveConnection = cN

Do Until currentFile = ""
    Debug.Print (currentFile)

    RS.Source = "select * from " & currentFile '
    
    'TODO
    
    currentFile = Dir
Loop

End Sub

我尝试在数据库连接字符串中的所有参数周围添加单/双引号,因为我看到有时可以解决其他人的问题,但这对我不起作用。我还尝试添加“Trusted_connection=yes;”等参数和“Integrated Security=SSPI”看看它是否满足某些安全要求,但前者给出错误“无法找到可安装的ISAM”,后者给出“多步OLE DB操作生成错误”。

excel vba oledb adodb
1个回答
0
投票

您有没有忘记将

currentFile
添加到您的 Open 字符串中

cN.Open ("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=""" & currentDir & currentFile & """;Extended Properties='Excel 12.0;HDR=YES;IMEX=1';")

下一个错误可能会出现在

 RS.Source = "select * from " & currentFile '
行中,但您应该首先尝试自行修复该问题。

© www.soinside.com 2019 - 2024. All rights reserved.