在Powershell中运行Access宏

Gar*_*eth 10 macros powershell ms-access

我正在尝试使用以下代码在PowerShell(v4.0 Windows 8.1)中运行Access 2010宏:

$Access = New-Object -com Access.Application

$Access.OpenCurrentDatabase("SomePath", $False, "Password")
$Access.Run("SomeProc")
$Access.CloseCurrentDatabase()
$Access.Quit()

[System.Runtime.InteropServices.Marshal]::ReleaseComObject($Access)
Remove-Variable Access
Run Code Online (Sandbox Code Playgroud)

我在行上$Access.Run("SomeProc")发现错误,指出没有足够的参数:

使用"1"参数调用"Run"的异常:"参数数量无效.(HRESULT异常:0x8002000E(DISP_E_BADPARAMCOUNT))"

该过程SomeProc不需要任何参数.

我已经阅读了关于run方法的msdn文章,只需要一个参数.

我也尝试过这种解决方法,但也因为一个无关的原因而无法工作.

有谁知道错误的原因是什么以及如何使该方法工作?

Jon*_*n H 4

这是 OLEDB 库无法正确加载的驱动程序问题。

我能够准确地重现您的错误,并且我能够通过从 SysWow 目录而不是 System32 打开 Powershell 来解决该问题。

尝试打开此版本的 Powershell(您必须再次运行 set-executionpolicy),然后查看它是否会执行您的脚本。

%SystemRoot%\syswow64\WindowsPowerShell\v1.0\powershell.exe

有用的链接:https://social.msdn.microsoft.com/Forums/en-US/4500877f-0031-426e-869d-bda33d9fe254/microsoftaceoledb120-provider-cannot-be-found-it-may-not-be-properly -已安装?论坛=adodotnetdataproviders