跳到主要内容

模拟键盘输入

我们可以使用 Application 对象的 SendKeys 方法来模拟键盘输入,将击键发送至活动应用程序。特别要注意的是,将击键发送至活动应用程序,例如:本来程序要求是在 Excel 工作界面下执行宏,但是你在 VBE 界面下执行宏,按键将在 VBE 界面下操作,可能宏就不起作用了。

SendKeys 方法语法

Application.SendKeys (Keys, Wait)

Keys 参数可指定任何单个键或与 AltCtrlShift 的组合键(或者这些键的组合)。 每个键均可用一个或多个字符表示,例如,"b" 表示字符 b,"{DELETE}" 表示 Delete 键。

若要指定按相应键时未显示的字符, (例如:EnterTab) ,请使用下表中列出的代码。 表中的每个代码表示键盘上的一个键。

非打印字符键盘代码
按键 代码
Backspace {BACKSPACE}{BS}
Break {BREAK}
Caps Lock {CAPSLOCK}
Clear {CLEAR}
Delete 或 Del {DELETE}{DEL}
End {END}
Enter(数字小键盘) {ENTER}
Enter ~(波形符)
Esc {ESCAPE}{ESC}
Help {HELP}
Home {HOME}
Ins {INSERT}
Num Lock {NUMLOCK}
Page Down {PGDN}
Page Up {PGUP}
Return {RETURN}
Scroll Lock {SCROLLLOCK}
Tab {TAB}
F1 到 F15 {F1}{F15}
向上键 {UP}
向下键 {DOWN}
向左键 {LEFT}
向右键 {RIGHT}

还可以组合 ShiftCtrlAlt 指定键。 要指定与其他键组合使用的键,请使用下表。

组合键代码
要组合的键 在键代码之前添加
Shift +(加号)
Ctrl ^(插入符号)
Alt %(百分号)

若为特定字符指定处理过程(如 +^%~ 等等),可将此字符用大括号 {} 括起来。例如要指定加号,可以用 {+} 表示。

如果要指定重复键,可以使用 {key number} 的形式,必须在 key 与 number 之间放置一个半角空格。例如: {1 5} 指按 5 次数字 1 键。

参数 Wait 可选,若该值为 True,则 Microsoft Excel 等待击键处理完后再将控制返回给宏。如果该值为 False(或省略),则宏继续执行而不等待击键处理完毕。

SendKeys 方法将击键放到键盘缓冲区。某些情况下,在调用要使用击键的方法之前必须先调用此方法。例如,若要往对话框中发送密码,则必须在显示对话框之前调用 SendKeys 方法。

示例

以下示例在显示另存为对话框之前先调用 SendKeys 方法:

Sub SaveAsFilename()
    Application.SendKeys "OACourse.xlsm"
    Application.Dialogs(xlDialogSaveAs).Show
End Sub

以下示例创建新的工作簿:

Application.SendKeys ("^n")

以下示例打开 Excel “名称管理器”:

Application.SendKeys ("%mn")

以下示例将值 1234 输入到了“活动单元格”中。

Application.SendKeys ("1234{Enter}")

以下示例选择单元格 A1 中的最后5个字符:

Sub SelectSpecialChar()
    Range("A1").Select
    Application.SendKeys "{F2}+{Left 5}"
End Sub

以下示例将激活【开发工具】选项卡(如果开发工具选项卡当前不处于活动状态则激活它,要测试此宏,请不要激活开发工具选项卡,而是使用 Alt+F8 选择运行 ShowDevTools 宏。):

Sub ShowDevTools()
    If Not Application.ShowDevTools Then
        Application.ShowDevTools = True
    End If
    Application.SendKeys "/las%V~"
End Sub

评论

您的电子邮件地址不会显示出来。*号为必填项。