[已解决]EXC求助
本帖最后由 枫飞秋语 于 2015-8-13 16:58 编辑求助,如何把EXC任意单元格执行send("^c")后的复制内容写入另一个表格的指定单元格..变量怎么定义!
谢谢! 你的代码呢,看一下 回复 2# kevinch Dim $1, $2, $3, $4, $5, $6, $i, $s
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ComboConstants.au3>
#include <Excel.au3>
#include <ButtonConstants.au3> ;按钮框的样式
#Region ### START Koda GUI section ### Form=c:\documents and settings\administrator\桌面\form1.kxf
$Form1_1 = GUICreate("核算工具", 185, 210, 281, 167)
$Input1 = GUICtrlCreateInput("", 68, 60, 109, 21)
$Label1 = GUICtrlCreateLabel("结算表格:", 8, 66, 60, 17)
$Label2 = GUICtrlCreateLabel("方向:", 8, 97, 40, 17)
$Label7 = GUICtrlCreateLabel("方向:", 8, 157, 40, 17)
$Combo1 = GUICtrlCreateCombo(" ", 48, 91, 41, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "左|右")
$Combo2 = GUICtrlCreateCombo(" ", 48, 153, 41, 21, BitOR($CBS_DROPDOWN, $CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "左|右")
$Label4 = GUICtrlCreateLabel("工单表格:", 8, 128, 60, 17)
$Input3 = GUICtrlCreateInput("", 68, 122, 109, 21)
$Label3 = GUICtrlCreateLabel("F1为电话", 53, 8, 73, 17)
$Label5 = GUICtrlCreateLabel("` 为注册", 53, 24, 76, 17)
$Label6 = GUICtrlCreateLabel("F2为姓名", 53, 40, 76, 17)
$Label8 = GUICtrlCreateLabel("次数:", 98, 97, 40, 17)
$Label9 = GUICtrlCreateLabel("次数:", 98, 157, 40, 17)
$Input2 = GUICtrlCreateInput("", 135, 91, 41, 21) ;输出次
$Input4 = GUICtrlCreateInput("", 135, 153, 41, 21) ;输入次
$stop = GUICtrlCreateButton("停止(&T)", 55, 180, 81, 23, 1)
GUICtrlSetState($stop, $GUI_HIDE)
$go = GUICtrlCreateButton("开始(&S)", 55, 180, 81, 23, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Label1
Case $Label2
Case $Label3
Case $go
go()
Case $stop
stop()
EndSwitch
WEnd
Func go()
$1 = GUICtrlRead($Input1)
$2 = GUICtrlRead($Input2)
$3 = GUICtrlRead($Input3)
$4 = GUICtrlRead($Input4)
If GUICtrlRead($Combo1) = "左" Then
$5 = "left"
ElseIf GUICtrlRead($Combo1) = "右" Then
$5 = "right"
ElseIf GUICtrlRead($Combo1) = " " Then
$5 = " "
EndIf
If GUICtrlRead($Combo2) = "左" Then
$6 = "left"
ElseIf GUICtrlRead($Combo2) = "右" Then
$6 = "right"
ElseIf GUICtrlRead($Combo2) = " " Then
$6 = " "
EndIf
GUICtrlSetState($Input1, $GUI_DISABLE)
GUICtrlSetState($Input2, $GUI_DISABLE)
GUICtrlSetState($Input3, $GUI_DISABLE)
GUICtrlSetState($Input4, $GUI_DISABLE)
GUICtrlSetState($Combo1, $GUI_DISABLE)
GUICtrlSetState($Combo2, $GUI_DISABLE)
GUICtrlSetState($go, $GUI_HIDE)
GUICtrlSetState($stop, $GUI_SHOW + $GUI_FOCUS)
HotKeySet("{F2}", "gui")
WinSetState("核算工具", "", @SW_MINIMIZE)
EndFunc ;==>go
Func stop()
GUICtrlSetState($Input1, $GUI_ENABLE)
GUICtrlSetState($Input2, $GUI_ENABLE)
GUICtrlSetState($Input3, $GUI_ENABLE)
GUICtrlSetState($Input4, $GUI_ENABLE)
GUICtrlSetState($Combo1, $GUI_ENABLE)
GUICtrlSetState($Combo2, $GUI_ENABLE)
GUICtrlSetState($go, $GUI_SHOW)
GUICtrlSetState($stop, $GUI_HIDE)
HotKeySet("{F2}")
EndFunc ;==>stop
Func gui()
$i = 1
$S = InputBox("次数提示", "请输入查询总数")
Local $sFilePath1 = @ScriptDir & "\" & $1 ;此文件应该已存在
Local $oExce1 = _ExcelBookOpen($sFilePath1)
Local $sFilePath2 = @ScriptDir & "\" & $3 ;此文件应该已存在
Local $oExce2 = _ExcelBookOpen($sFilePath2)
Sleep(1500)
While $i <= $S
Sleep(500)
Local $sCellValue = _ExcelReadCell($oExce1, $i +19, 2)
Send("^f")
Send($sCellValue)
Send("!f")
WinActivate($3)
Sleep(500)
If WinExists("Microsoft Excel", "Microsoft Office Excel 找不到正在搜索的数据") = 1 Then
Send("{space}")
Sleep(200)
Send("{esc}")
Sleep(500)
WinActivate($1)
Else
Sleep(500)
Send("{esc}")
Sleep(200)
Send("{" & $6 & " " & $4 & "}")
Sleep(500)
; Local $sCellValue2 = _ExcelReadCell($oExce2,,6,)
Sleep(200)
Send("^c")
Local $sCellValue2 = Send("^c")
Sleep(500)
WinActivate($1)
Sleep(500)
_ExcelWriteCell($oExce1,$sCellValue2, $i +19, 4)
Sleep(500)
EndIf
Sleep(200)
Sleep(200)
$i = $i + 1
If $i > $S Then
MsgBox(4096, "操作完成", "已操作 " & $S & " 次")
EndIf
WEnd
EndFunc ;==>gui 本帖最后由 kevinch 于 2014-5-30 10:19 编辑
While $i <= $S
Local $sCellValue = _ExcelReadCell($oExce1, $i +19, 2)
$rng=$oExce1.activesheet.cells.find($sCellValue)
If IsObj($rng) Then _ExcelWriteCell($oExce2,$rng.value, $i +19, 4)
$i = $i + 1
If $i > $S Then
MsgBox(4096, "操作完成", "已操作 " & $S & " 次")
EndIf
WEnd我只能猜测你是想在1里找到写到2里
最好你描述一下实际情况,你上面代码的处理效果与稳定性都不太好吧 本帖最后由 枫飞秋语 于 2014-5-30 10:30 编辑
回复 4# kevinch
额.是这样的,,读取表1(20,2)的内容,在表2里查询到相同内容(假设查询到的位置是60,2).但是我要复制的内容是(60,5)的..(查询到后方向键右移几个单元格)..然后把这个单元格的内容写入到表1的(20,4)的单元格去
不知道怎么解释了,,能看懂么?~! 本帖最后由 kevinch 于 2014-5-30 10:34 编辑
$str=$oExce1.activesheet.cells(20,2).value
$rng=$oExce2.activesheet.cells.find($str)
if isobj($rng) then $oExce1.activesheet.cells(20,4).value=$rng.offset(0,3).value这样试下 回复 4# kevinch
能否这样写?表1读取某个单元格信息,在表2找到相同单元格,读取此单元格后第3格的的内容,写入到表1里某个单元格,,,
大致是这个意思吧~! 回复 6# kevinch
能帮简单注释下么? 本帖最后由 枫飞秋语 于 2014-5-30 10:42 编辑
这样试下
kevinch 发表于 2014-5-30 10:33 http://www.autoitx.com/images/common/back.gif
好像有看懂点了~!我试试,谢谢哈~! 回复 6# kevinch
非常的感谢您,,,这个代码完全是我想要的,,,又快,又简洁,,,,佩服啊~! 这样试下
kevinch 发表于 2014-5-30 10:33 http://www.autoitx.com/images/common/back.gif
大师,能帮增加一点内容么?..
在表2查询内容后,在后几格,写入一个字节做个标记,然后才把offset(0,3)写入表1 第三句的赋值语句你可以参考修改 第三句的赋值语句你可以参考修改
kevinch 发表于 2014-5-30 14:55 http://www.autoitx.com/images/common/back.gif
额.不是很懂改,,,原因表2查询到的位置是随机行,,不知道怎么定义此行去写入.. 用ClipPut ( "value" )
然后 ClipGet ( ) 回复 14# Linda
哈,谢谢了..剪贴板,,,晕死,,怪不得我一直找剪切板,,搜不到帮助内容....
目前已经"kevinch"大哥的代码了.很精简很效率,,,,,不过还是要谢谢你的帮助!
页:
[1]
2