把系统clipboard的内容拷贝到execl中,我打开OLE容器,但是
OLEExecl.CreateEmbed "", "Excel.Sheet"
OLEExecl.DoVerb vbOLEUIActivate
OLEExecl.PasteOK 总是FALSE那位大虾有办法,帮帮忙
OLEExecl.CreateEmbed "", "Excel.Sheet"
OLEExecl.DoVerb vbOLEUIActivate
OLEExecl.PasteOK 总是FALSE那位大虾有办法,帮帮忙
的功能如下
首先调用miscrosoft word或其他文字处理软件,
新建一个文档,然后运行程序,在文本框中输入文本。
如果我这时候点击word的话(激活),怎么将文本框
中输入的文字粘贴到word中。直接粘贴,不用ctrl-v.
在"唯一"的form窗体中再添加一个timer控件(interval=200,如果运行不正常,可适当加大此值), (当然还
有一个text),接着代码如下∶
Private Declare Function GetForegroundWindow& Lib "user32" ()
Private Declare Function GetWindowText& Lib "user32" Alias "GetWindowTextA" _
(ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long)
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte,
_
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Declare Function MapVirtualKey& Lib "user32" Alias "MapVirtualKeyA" _
(ByVal wCode As Long, ByVal wMapType As Long)Private Const VK_CONTROL& = &H11 'ctrl键的虚拟键值
Private Const KEYEVENTF_KEYUP% = &H2
Private Const VK_V& = &H56 'V键的ascii码值(虚拟键值)Private Sub Text1_Change()
Timer1.Enabled = True
Clipboard.Clear
Clipboard.SetText Form1.Text1.Text
End SubPrivate Sub Timer1_Timer()
Dim dl1&, dl2&
Dim Canp As String * 255
dl1& = GetForegroundWindow&() '获取当前活动窗口的句柄
dl2& = GetWindowText&(dl1&, Canp$, 255) '获取窗口的标题
If Left(Canp$, 14) = "Microsoft Word" Then
MyCapture 1
Timer1.Enabled = False
End If
End Sub
Public Sub MyCapture(ByVal mode%) '生成一次模拟击键∶Ctrl+V
Dim altscan%
Dim dl&
Dim snapparam%
altscan% = MapVirtualKey(VK_CONTROL, 0)
keybd_event VK_CONTROL, altscan, 0, 0
keybd_event VK_V, 0, 0, 0
keybd_event VK_CONTROL, altscan, KEYEVENTF_KEYUP, 0
End Sub
注∶本例程只适用于microsoft word.要适用于其他文字处理程序,请
修改程序中的 If Left(Canp$, 14) = "Microsoft Word" Then 条件检测。