通过VBScript使用ADOX

通过VBScript使用ADOX,vbscript,ms-access-2010,adox,Vbscript,Ms Access 2010,Adox,难道您不能通过VBScript实现ADOX库吗?下面的代码通过Windows 7上的Access 2010、Office 2010 32位完美运行,但不是通过VBScript。ADOX不是像FileSystemObject那样的另一个COM对象吗 Dim objADOX Set objADOX = CreateObject("ADOX.Catalog") objADOX.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Sou

难道您不能通过VBScript实现ADOX库吗?下面的代码通过Windows 7上的Access 2010、Office 2010 32位完美运行,但不是通过VBScript。ADOX不是像FileSystemObject那样的另一个COM对象吗

Dim objADOX

Set objADOX = CreateObject("ADOX.Catalog")
objADOX.ActiveConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Zamdrist\Desktop\Work\Scripts\Shell.accdb"
MsgBox objADOX.Tables.Count

抱歉,我应该指出,VBScript抱怨提供程序不存在。奇怪的是,我确实安装了Access 2010。

这并不是一个简单的答案,只是一个给我带来巨大帮助的提示。我经常与只使用32位的提供者合作,所以我总是将附加的代码添加到我的所有脚本中。这样,执行代码的机器是32位还是64位并不重要

'Check for 64 bit and run as 32 bit if needed.
'On error resume next

Set oFso = CreateObject("Scripting.FileSystemObject")
Set oWs = CreateObject("WScript.Shell")

windowsdir = oWs.ExpandEnvironmentStrings("%windir%")

If InStr(LCase(WScript.FullName), windowsdir & "\system32\") And oFso.FolderExists(windowsdir & "\SysWow64") Then       
    oWs.Run windowsdir & "\SysWow64\WScript.exe """ & WScript.ScriptFullName & """"
    WScript.Quit
End If

'code to run as 32 bit

是的,ADOX应该很好用。如果没有,您将在
CreateObject()
行中得到一个错误。您的错误发生在
ActiveConnection
行上。您是否使用64位Windows 7?如果是,您是否使用64位版本的
WSCRIPT.EXE
?您可能需要使用32位版本的
WSCRIPT
来访问32位OLEDB驱动程序。32位版本的
WSCRIPT.exe
cscript.exe
可以在
C:\Windows\SysWOW64
中找到。就是这样!非常感谢。邦德,如果你想回答这个问题,我会把答案记下来。谢谢