我安装了 OLEDB 提供商“Microsoft.ACE.OLEDB.15.0;”的 Office;未注册(我无法从下面附加的 powershell 列表中看到它)
但是,在 Excel VBA 中,我可以在连接字符串中使用此 ACE 提供程序创建并连接到数据源。
Sub test()
Dim con As New ADODB.Connection
Dim database As String, AccessConnect_ACE As String
database = "C:\temp\test.mdb"
AccessConnect_ACE = "Provider=Microsoft.ACE.OLEDB.15.0;" & _
"Data Source=" & database & ";"
con.ConnectionString = AccessConnect_ACE
con.Open
End Sub
但是一个非常相似的python脚本不起作用
import adodbapi
database = "D:\\test\\test.mdb"
constr = 'Provider=Microsoft.ACE.OLEDB.15; Data Source=%s' % database
conn = adodbapi.connect(constr)
是什么原因?
PS:列出已注册提供程序的powershell脚本
function Get-OledbRegistered
{
[CmdletBinding()]
[OutputType([System.Collections.Generic.List[PSObject]])]
param ()
Process
{
$list = New-Object ([System.Collections.Generic.List[PSObject]])
foreach ($provider in [System.Data.OleDb.OleDbEnumerator]::GetRootEnumerator())
{
$v = New-Object PSObject
for ($i = 0; $i -lt $provider.FieldCount; $i++)
{
Add-Member -in $v NoteProperty $provider.GetName($i) $provider.GetValue($i)
}
Write-Host "$v"
Write-Host "111"
$list.Add($v)
}
return $list
}
}
Get-OledbRegistered