/ / Prečo môže VBA využívať poskytovateľa ACE.OLEDB, ktorý nie je neregistrovaný? - python, com, oledb, adodb, adodbapi

Prečo VBA môže používať poskytovateľa ACE.OLEDB, ktorý nie je registrovaný? - python, com, oledb, adodb, adodbapi

Mám nainštalovaný balík Office od poskytovateľa OLEDB „Microsoft.ACE.OLEDB.15.0;“ nie je zaregistrovaný (nevidím ho zo zoznamu z priloženého kocky)

V programe Excel VBA však môžem vytvoriť a pripojiť sa k zdroju údajov s týmto poskytovateľom ACE v pripojovacom reťazci.

Sub test()
Dim con As New ADODB.Connection
Dim database As String, AccessConnect_ACE As String

database = "C:temptest.mdb"
AccessConnect_ACE = "Provider=Microsoft.ACE.OLEDB.15.0;" & _
"Data Source=" & database & ";"

con.ConnectionString = AccessConnect_ACE
con.Open

End Sub

ale veľmi podobný python skript nefunguje

import adodbapi

database = "D:\test\test.mdb"
constr = "Provider=Microsoft.ACE.OLEDB.15; Data Source=%s"  % database

conn = adodbapi.connect(constr)

Aky je dôvod?

PS: Skript powershell na zoznam registrovaných poskytovateľov

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

odpovede:

0 pre odpoveď č. 1

Ste si istí, že Powershell beží na 32 bitoch tak, ako to robíte v Exceli?

Poskytovateľ OLEDB možno existuje na 32 bitoch, ale nie na 64 bitoch. Nainštalujte aj balík SCE na 64 bitov!