从VBA向cmd行发送密钥会丢失特殊键

时间:2013-04-12 18:59:09

标签: vba cmd

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

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

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

SELECT edr.VersionName  ' '  edr.BuildName

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

2 个答案:

答案 0 :(得分:3)

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

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

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

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

修改

好的,您可以显示括号,但您必须将它们包含两次:

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

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

答案 1 :(得分:3)

实际上我发现了另一种显示这些特殊字符的方法,用{}括起来它会显示在我的命令行中。谢谢你的帮助!