我正在编写一个 VBA 宏,它将向命令行发送一个字符串,如下所示:

str = "SELECT (edr.VersionName + ' ' + edr.BuildName)"
RSP = Shell(Environ$("COMSPEC"), vbNormalFocus)
SendKeys str

但问题是像 ( 和 + 这样的特殊键在翻译中丢失了;命令行最终如下所示:
SELECT edr.VersionName  ' '  edr.BuildName

如何防止这些特殊字符在此过程中丢失?

最佳答案

您可以使用以下字符串显示“+”符号:

str = "SELECT (edr.VersionName += ' ' += edr.BuildName)"

在 VBA 中的 SendKeys 函数中,“+”符号用于表示{SHIFT}键。所以,{SHIFT}=,实际上是“+”符号;至少在我的键盘上。

使用这种逻辑,'+9' 和 '+0' 应该给你 '(' 和 ')' 但我还没有让它们工作。

编辑

好的,您可以让括号显示出来,但您必须将它们包含两次:
str = "SELECT +9" & "(edr.VersionName += ' ' += edr.BuildName)" & "+0"

再次记住,上面的字符串适用于我的键盘(标准英语)。如果您使用不同的键盘布局,“+”号后面的字符很可能会有所不同。

关于vba - 从 VBA 向 cmd 行发送 key 会丢失特殊 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15978896/

10-15 08:16