在VB中按下一个按钮就会自动把黏贴板里面的文字复制到word、excel里面的光标所在处,能不能实现这个功能?

麻烦大师们贴出代码,严重感谢!!!!
SendKeys "^V", True 不行,因为光标被VB窗口占用了,无法粘贴到word里面去

用VB中实现复制、粘贴:

方法一:用剪贴板操作

Clipboard.SetText abc
把字符串复变量abc中的字符串制到剪贴板

def = Clipboard.GetText
把剪贴板中的字符串赋值个字符串变量def

方法二:发送键盘指令
调用SendKeys,向当前活动窗口发送键盘指令

SendKeys "^C", True
表示向当前活动窗口发送键盘指令 Ctrl + C ,其中,“^”符号代表Ctrl按键。这个可用于复制。

SendKeys "^V", True
表示向当前活动窗口发送键盘指令 Ctrl + V ,其中,“^”符号代表Ctrl按键。这个可用于粘贴。

注意:在发送键盘指令之前,先让Word取得焦点,成为当前活动窗口。
如何让Word取得焦点,那就使用Windows API函数。在VB中调用Windows API函数要先声明:

需要两个声明:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function SetForegroundWindow Lib "user32" Alias "SetForegroundWindow" (ByVal hwnd As Long) As Long

然后,调用:
Dim hWnd As Long ' 窗口句柄
hWnd = FindWindow(vbNullString, "这里是程序的标识符") ' 取得窗口句柄
SetForegroundWindow hWnd ' 设置为活动窗口

经过我测试,以下代码可以向记事本粘贴文字:

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SetForegroundWindow Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Private Sub Command1_Click()
Dim hWnd As Long ' 窗口句柄
hWnd = FindWindow("notepad", vbNullString) ' 获得记事本的窗口句柄,notepad是记事本
SetForegroundWindow hWnd ' 把记事本设置为当前活动窗口
Sleep 100 ' 延时100毫秒(把记事本设置为当前窗口需要时间)
SendKeys "^V", True ' 发送键盘指令 Ctrl +V ,实现“粘贴”
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-08-18


第2个回答  2011-08-15
能实现这个功能。至于怎么实现你没问。
第3个回答  2011-08-15
那么麻烦干嘛,直接按Ctrl+V不就行了?

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网