VBS 脚本在 Access 数据库中不起作用
Posted
技术标签:
【中文标题】VBS 脚本在 Access 数据库中不起作用【英文标题】:VBS script not working in Access database 【发布时间】:2016-11-29 14:33:30 【问题描述】:我需要一些关于我正在处理的数据库的帮助。该数据库是一个非常基本的界面,通过单击侧面的不同命令按钮来运行许多功能。这些命令相当简单,但我不擅长使用 VBS/VBA。在我开始在这里工作之前,其他人建立了数据库!
我编写了一个 Powershell 脚本,它可以将数据过滤和排序到更易读的列表中。因为我比 Visual Basic 稍微熟悉它,所以我只想保留该脚本并使用 VB 通过 Access 运行它。该脚本工作正常,但我试图将它作为另一个可点击的“命令按钮”添加到数据库中。我必须运行 PS 脚本的 VBS 脚本是:
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run("powershell.exe -noexit P:\TestScripts\runtest.ps1")
同样,这段代码运行良好,它打开 Powershell 命令行,提示用户输入信息并运行脚本。当我将它作为“事件过程”添加到 Access 时(在命令按钮的属性表中,我将“单击时”设置为“事件过程”,因此我可以添加 VBS 代码)然后在数据库中工作,有当我按下该命令时没有响应。我需要更改我的 VBS 脚本吗?我假设 VBS 和 VBA 之间的运行命令没有太大区别。 Access 中的代码如下所示:
Private Sub Command58_Click()
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run ("powershell.exe -noexit P:\TestScripts\runtest.ps1")
End Sub
抱歉,我只是想尝试提供尽可能多的信息!我会很感激任何帮助。很可能有一个简单的解决方案来解决所有这些问题,但我缺乏经验肯定会让我退缩!谢谢。
-J
【问题讨论】:
VBScript and CreateObject issue的可能重复 【参考方案1】:这是最令人费解的。首先你创建一个 PS 脚本,然后你创建一个 VB 脚本来调用 Powershell 来运行 PS 脚本——现在你想运行 VBA 来运行 VB 脚本来运行你的 PS 脚本。
您错过的是使用 C# 运行一个程序,该程序使用自动化打开 Access 以运行 VBA 来调用您的嵌套脚本。
使用 VBA 的 Shell 命令调用 PS 并运行 PS 脚本,或者 - 更好的是 - 花一点时间将 PS 脚本转换为 VBA。
【讨论】:
嗯...谢谢,我猜?我意识到这很复杂,但本质上我只是想知道我是否可以像 VBS 一样在 VBA 中运行 PS 脚本。过度的讽刺是非常感谢的。我说得很清楚,我对不同的语言不太擅长。这个论坛适合所有人,从初学者到专家,所以下次尝试放松一点。 对不起,这不是故意的,但是你写的只是比 VBA 更熟悉 PS,而且 PS 脚本只是做了一些过滤和排序。但是 VS 不是 VBA,所以使用 VS 运行 PS 脚本只是毫无目的地添加了另一层。那么为什么不发布您的 PS 脚本并解释它的作用并将其转换为 VBA 呢? @jam1989 "I WANTA USE ALL DA CODEZ!!!" 不要假设因为 VBScript 以一种方式在 VBA 中使用相同的方式,请使用适合工作的工具。 不,我现在明白了!我没有意识到在 Access 中运行 PS 脚本是那么容易。你们都说得对,我把事情复杂化了。为了方便起见,我也可以尝试将我的 PS 代码转换为 VBA。不过目前,Shell 功能运行良好,因此感谢@Gustav 的建议。我宁愿尝试正确地学习 VBA 并自己转换我的 PS 代码。如果我需要帮助,我相信我会回来的!再次感谢:)【参考方案2】:WScript 对象在 Access 下不可用(它由 w|cscript.exe 脚本宿主提供)。所以用
Private Sub Command58_Click()
Set objShell = CreateObject("Wscript.Shell")
objShell.Run ("powershell.exe -noexit P:\TestScripts\runtest.ps1")
End Sub
见here。
【讨论】:
感谢您的帮助:) 当 VBA 内置Shell()
函数可以使用时,为什么要使用 Windows Scripting Host 引用?有了 Gustav,在 VBA 中添加一个额外的层来完成 VBA 在没有它的情况下已经可以做的事情是没有意义的。以上是关于VBS 脚本在 Access 数据库中不起作用的主要内容,如果未能解决你的问题,请参考以下文章
SQL 查询在 Excel 中不起作用,但在 Access 中起作用