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

发布网友 发布时间:2022-04-24 10:21

我来回答

4个回答

热心网友 时间:2023-10-10 04:44

用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

热心网友 时间:2023-10-10 04:44

http://www.soso.com/q?cid=im.link&ie=utf-8&w=VB%E5%8F%96%E5%BE%97%E5%8F%A5%E6%9F%84

http://www.soso.com/q?sc=web&bs=VB%C8%A1%B5%C3%BE%E4%B1%FA&ch=w.uf&num=10&w=VB+%CF%F2%D6%B8%B6%A8%B4%B0%BF%DA%B7%A2%CB%CD%B0%B4%BC%FC

热心网友 时间:2023-10-10 04:45

能实现这个功能。至于怎么实现你没问。

热心网友 时间:2023-10-10 04:45

那么麻烦干嘛,直接按Ctrl+V不就行了?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com