Python 为什么VBA可以使用未注册的ACE.OLEDB提供程序?
我发现OLEDB提供程序“Microsoft.ACE.OLEDB.15.0;”安装的Office未注册(我无法从下面随附的powershell列表中看到它) 但是,在Excel VBA中,我可以使用连接字符串中的此ACE提供程序创建并连接到数据源Python 为什么VBA可以使用未注册的ACE.OLEDB提供程序?,python,com,oledb,adodb,adodbapi,Python,Com,Oledb,Adodb,Adodbapi,我发现OLEDB提供程序“Microsoft.ACE.OLEDB.15.0;”安装的Office未注册(我无法从下面随附的powershell列表中看到它) 但是,在Excel VBA中,我可以使用连接字符串中的此ACE提供程序创建并连接到数据源 子测试() Dim con作为新的ADODB连接 Dim数据库作为字符串,AccessConnect\u ACE作为字符串 database=“C:\temp\test.mdb” AccessConnect_ACE=“Provider=Microsof
子测试()
Dim con作为新的ADODB连接
Dim数据库作为字符串,AccessConnect\u ACE作为字符串
database=“C:\temp\test.mdb”
AccessConnect_ACE=“Provider=Microsoft.ACE.OLEDB.15.0;”_
“数据源=”&database&“;”
con.ConnectionString=AccessConnect\u ACE
未结
端接头
但是一个非常相似的python脚本不起作用
导入adodbapi
database=“D:\\test\\test.mdb”
constr='Provider=Microsoft.ACE.OLEDB.15;数据源=%s“%s”数据库
conn=adodbapi.connect(CONT)
原因是什么
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
您确定Powershell以32位运行,就像您在我的系统中所做的那样吗 因此,OLEDB提供程序可能存在于32位,但不存在于64位。也为64位安装SCE包