【问题标题】:Shell cmd in access vba returns error 5 - invalid procedure call or argument访问 vba 中的 Shell cmd 返回错误 5 - 过程调用或参数无效
【发布时间】:2017-07-03 22:48:52
【问题描述】:

多年来,我在多个不同版本的数据库中使用了 MS Access 中的 Shell 命令。最近,我收到了这个运行时错误 5 - 我使用多年的 Shell 命令的过程调用或参数无效。谁能告诉我是否有最近的 Windows 更新或可能导致此错误出现的 MS Office 更新?我目前正在使用 Office 2010 和 Office 2013,并且在多台计算机上的两个版本中都收到相同的错误。我什至尝试过创建一个简单的空数据库并直接进入 vba 窗口,并在即时窗口中尝试了一个简单的 Shell 命令:

Shell "C:\Notepad.bat", vbNormalFocus  

Notepad.bat 里面有一个简单的命令:

cmd /C "Notepad.exe"

代码:

Shell "Notepad.exe", vbNormalFocus 

确实有效,但是:

Shell "Cmd.exe", vbNormalFocus 

在我测试它的每台机器上仍然给出相同的错误 5 消息。从 Windows 资源管理器运行批处理文件就可以了。非常感谢任何帮助。

【问题讨论】:

  • 从 Excel 2003 测试了所有三个,它们都按预期工作。检查您输入的运行代码。您也可以尝试使用一 (1) 代替 vbNormalFocus。他们可能已将声明移至您未引用的某个库,尽管这似乎不太可能。你也可以试试所有的 Shell(...)
  • 意思是 Call Shell(...) 或 SomeVar = Shell(...) 但不允许我编辑。

标签: vba shell batch-file ms-access cmd


【解决方案1】:

经过大量调查后,我偶然发现了我们的网络软件工程师安装的一个新软件,该软件维护了我们的 McAfee 保护。上周,一个名为 Adaptive Threat Protection 的新应用程序被盲目安装,并设置为检查运行 shell 命令的 MS office 应用程序,尤其是 CMD 类型。这被设置为自动阻止所有这些命令。我终于得出结论,查看我的计算机上最近安装或更新的任何东西,并碰巧发现在上周日期范围内安装了一些不同的东西。感谢您迄今为止的帮助和回答。 thx1138v2 提供的答案是我在发帖之前也尝试过的,但我认为对于我的第一个问题,我试图将我的帖子保持在最低限度。

【讨论】:

  • 如果您熟悉 Windows API 调用,ShellExecute 可能适合您。我对这个 AM 做了更多的研究,在 Win10 和/或 32-64 位不兼容问题上,Shell 似乎也存在困难。所以 ShellExecute 可能是解决所有问题的方法。如果您尝试一下,我想听听您的结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-21
  • 1970-01-01
  • 2019-09-11
相关资源
最近更新 更多