运行 来自 VBA 的 VBS 脚本 - 无法识别的数据库格式

Running VBS script from VBA - Unrecognized DB Format

我正在创建 vbs 脚本,它将用作使用 MS Access 作为前端的工具的自动更新程序。 VBS 脚本将使用来自 MS Access (1) 的 VBA 代码启动。该脚本的一部分是通过创建与工具前端文件 (Test.accdb) 的 ADODB 连接并从 "tblLocalParameters" table (2 ).

问题是,当我双击脚本时,使用 ADODB 的函数可以正常工作,但是当我尝试使用 MS Access 运行 它 VBA 时,它会抛出错误: "Unrecognized database format"

我不确定是否需要有关整个自动更新程序脚本的更多信息,但我的计划是:检查 SQL db 是否工具是最新的。如果没有 - 启动更新程序脚本。脚本将使用 shell 命令关闭 MS Access,然后复制新文件并再次 运行 MS Access。

我尝试 运行 来自 excel 和其他 MS Access 文件的相同脚本,它导致了同样的错误。

如能帮助我消除 "Unrecognized database format" 错误,我将不胜感激。

MS ACCESS CODE:
(1) 
Dim Test()
    Shell "wscript ""C:\Test_Folder\TEST.vbs""", vbNormalFocus
End Sub
(2)
VBS SCRIPT CODE
Option Explicit

Dim strFile

strFile = "C:\Test_Folder\TEST.accdb"

WScript.Echo  FileReadAccessDB(strFile,"tblLocalParameters","ParameterValue","ParameterName","'VersionCurrent'")

'-------------------------------------------------------------
Function FileReadAccessDB(DbPath, tblName,fldName,IdCol,IdVal)
    Dim cn, rs
    Dim qSQL
    Dim errNo

    Set cn = CreateObject("ADODB.connection") 

    cn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & DbPath & ";Persist Security Info=False;"
    cn.Open

    Set rs = CreateObject("ADODB.recordset")
    qSQL = "SELECT " & fldName & " FROM " & tblName & " WHERE " & IdCol &  " = " & IdVal
    rs.open qSQL, cn

    FileReadAccessDB =  rs.fields(fldName).value

    rs.close
    cn.close

End Function

我找到了问题的根源。我决定放弃 VBS 并创建 C# 控制台应用程序。在测试期间,我发现连接字符串 (provider = "Microsoft.ACE.OLEDB.12.0") 仅在我将平台目标设置为 x64 时才有效。

我的 Windows 是 64 位的,但 Office 是 32 位的。在资源管理器中双击以 x64 启动脚本,但 MS Access vba shell 以 x86 启动它。

我找到了一些代码,将其添加到脚本中 - 它解决了问题。

If InStr(LCase(WScript.FullName),"syswow64") Then
CreateObject("WScript.Shell").Run """%systemroot%\sysnative\wscript.exe"" """ & WScript.ScriptFullName & """"
  WScript.Quit
End If

如果脚本在 64 位 windows 上以 32 位模式运行,它会以 64 位模式重新运行。

Credit