我尝试使用 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操作生成错误”。
您有没有忘记将
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 '
行中,但您应该首先尝试自行修复该问题。