视频加载中...
任务内容:
每个月都要将上个月的异常记录,录入到公司的网站上。异常记录已经由公司的美女录入到Excel表中了,每个月多的时候上千条记录,少的时候也有三四百条记录。由于开发的网站不够智能,只能再一条条地把记录搬运到网站上。复制。。。黏贴。。。复制。。。黏贴。。。复制。。。黏贴。。。复制。。。黏贴。。。[吐血]

抓狂中...
解决方案:
通过VBA的 SendKeys来代替我们手动的复制黏贴。
SendKeys 语句说明:向活动窗口发送一个或多个键击,就像按键盘上的按键一样。
因此使用sendKeys来代替我们手动按键盘,刚好可以用来解决我们的需求。
sendKeys对应按键代码
|
键 |
代码 |
|
Backspace |
{BACKSPACE} 或 {BS} |
|
Break |
{BREAK} |
|
Caps Lock |
{CAPSLOCK} |
|
清除 |
{CLEAR} |
|
Delete 或 Del |
{DELETE} 或 {DEL} |
|
向下键 |
{DOWN} |
|
结束 |
{END} |
|
Enter(数字小键盘) |
{ENTER} |
|
Enter |
~(波形符) |
|
Esc |
{ESCAPE} 或 {ESC} |
|
帮助 |
{HELP} |
|
主页 |
{HOME} |
|
Ins |
{INSERT} |
|
向左键 |
{LEFT} |
|
Num Lock |
{NUMLOCK} |
|
PageDown |
{PGDN} |
|
PageUp |
{PGUP} |
|
Return |
{RETURN} |
|
向右键 |
{RIGHT} |
|
Scroll Lock |
{SCROLLLOCK} |
|
Tab |
{TAB} |
|
向上键 |
{UP} |
|
F1 到 F15 |
{F1} 到 {F15} |
|
键 |
代码 |
|
Shift |
+ |
|
Ctrl |
^ |
|
Alt |
% |
1.获取sendkeys对象
Set ws = CreateObject("wscript.shell")
2.将要黏贴的内容复制到剪贴板
msg = zuSheet.Cells(i, 13)'要复制的内容
ws.Run "mshta vbscript:ClipboardData.SetData(" & Chr(34) &
"text" & Chr(34) & "," & Chr(34) & msg & Chr(34) & ")(close)", 0, True
3.黏贴内容
'模拟键盘录入 Ctrl+V
ws.SendKeys "^v"
4.循环复制黏贴键入
time = 200
'这里暂停1500毫秒是为了预留时间,将网页手动切换的前台来
Sleep 1500
For i = 3 To zuSheet.Cells(Rows.count, 1).End(xlUp).Row
msg = zuSheet.Cells(i, 4) '要复制的内容
ws.Run "mshta vbscript:ClipboardData.SetData(" & Chr(34) & "text" & Chr(34) & "," & Chr(34) & msg & Chr(34) & ")(close)", 0, True
Sleep time
ws.SendKeys "^v"
Sleep time
ws.SendKeys "{TAB}"
......
ws.SendKeys "{TAB}"
ws.SendKeys "{TAB}"
Next
切换网页到前台问题:
这里有个不足的地方就是,无法自动将网页切换到前台
使用 ws.SendKeys "%{TAB}",无法实现
有网友说使用两个:
ws.SendKeys "%{TAB}"
ws.SendKeys "%{TAB}"
经验证也是没有反应,无法实现将网页切换到前台。
所以这里只能暂时用手动的方式,切换过去
(不知道有没哪个网友来支个招)
Sleep 问题:
Sleep 延时,这个是毫秒级别的, 使用时必须要先声明
'32位系统用这个
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'64位系统用这个
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
需要完整代码或小工具的,请在评论区留言
有任何相关问题,欢迎来评论区交流
作者介绍:专注办公自动化,让工作轻松起来