tcpuuu 发表于 2012-2-8 23:14:57

[已解决]求助每秒 復製excel B1 E1格的數據 到 $a1 $a2

本帖最后由 tcpuuu 于 2012-3-6 15:09 编辑

不要用循環語句
底下這個 可以 每秒 抓電腦上時間 寫入$gu_Label1
要改成 每秒更新$gu_Label1 數值(這個數值是GUICtrlRead($A1))是這個GUI窗口 $A1框內的數字
該如何改#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

;变量必须先声明后使用
Opt("MustDeclareVars", 1)

;创建GUI
Global $gu_Form1 = GUICreate("时间日期", 220, 52, -1, -1)
Global $gu_Label1 = GUICtrlCreateLabel("", 0, 16, 220, 17, $SS_CENTER)

;运行主函数
_Clock_Main()
Exit 1

;程序主函数
Func _Clock_Main()
      ;初始化日期、周几、时间值
      _Clock_RefeshClock()

      ;显示GUI
      GUISetState(@SW_SHOW)

      ;每隔一秒刷新日期、周几、时间值
      AdlibRegister("_Clock_RefeshClock", 1000)

      Local $nMsg
      While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                              Exit

                EndSwitch
      WEnd
EndFunc   ;==>_Clock_Main

;刷新日期、周几、时间值
Func _Clock_RefeshClock()
      Local $Data = _Clock_Date() ;获取日期
      Local $Time = _Clock_Time() ;获取时间
      Local $Wday = _Clock_Wday() ;获取周几

      ;显示时钟信息
      GUICtrlSetData($gu_Label1, $Data & " " & $Wday & " " & $Time)
EndFunc   ;==>_Clock_RefeshClock

;获取日期
Func _Clock_Date()
      Return @YEAR & "年" & @MON & "月" & @MDAY & "日"
EndFunc   ;==>_Clock_Date

;获取时间
Func _Clock_Time()
      Return @HOUR & ":" & @MIN & ":" & @SEC
EndFunc   ;==>_Clock_Time

;获取周几
Func _Clock_Wday()
      Local $a_Wday
      ;根据@WDAY的值(1~7)获取“星期x”的值
      Switch @WDAY
                Case 1
                        $a_Wday = "星期天"
                Case 2
                        $a_Wday = "星期一"
                Case 3
                        $a_Wday = "星期二"
                Case 4
                        $a_Wday = "星期三"
                Case 5
                        $a_Wday = "星期四"
                Case 6
                        $a_Wday = "星期五"
                Case 7
                        $a_Wday = "星期六"
      EndSwitch
      Return $a_Wday
EndFunc   ;==>_Clock_Wday====================================================
本來每秒抓1次時間寫入$gu_Label1
改成 每秒抓一次GUICtrlRead($A1) 的數據 寫入$gu_Label1

user3000 发表于 2012-2-8 23:55:33

大哥, 又是你!
难道你不知道本论坛有搜索功能吗?
这类问题, 这几天老有人问!

user3000 发表于 2012-2-9 03:07:12

我在$A1框 輸入 1   過1秒$gu_Label1 框 變成1
                輸入 2                              ...
tcpuuu 发表于 2012-2-9 02:52 http://www.autoitx.com/images/common/back.gif


    不错的进步, 恭喜楼主!

但对于窗口程序, 获取窗口消息的长循环应该跟主窗口代码放在一起, 而不是另外建立一个函数.
所以, 你应该把 _Clock_Main 函数去掉...
当然后面的 Exit 1 也是多余的了, 除非你在循环里加入了退出循环的代码.

tcpuuu 发表于 2012-2-9 14:32:09

本帖最后由 tcpuuu 于 2012-2-9 14:36 编辑

拜託 user3000 你可以幫我 改成
拜託大家幫助謝謝啦
每秒 復製excel B1 E1格的數據 到 $a1$a2
excel數字1直跳動   $a1$a2也跟著1直跳動
希望不會有造成重複開啟excel 的問題
#include <Excel.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 1)
Global $gu_Form1 = GUICreate("EXCEL TEST", 220, 160, -1, -1)
Global $gu_Label1 = GUICtrlCreateLabel("", 0, 16, 220, 17, $SS_CENTER)
Global $A1 = GUICtrlCreateInput("",2,38,64,22,0x01)
Global $A2 = GUICtrlCreateInput("",80,38,64,22,0x01)      
      
      GUISetState(@SW_SHOW)
      AdlibRegister("aaa",1000)
      Local $nMsg
      While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                              Exit
                EndSwitch
      WEnd

Func aaa();         
GUICtrlSetData($gu_Label1,GUICtrlRead($A1))
EndFunc   ;aaa

zengjinbai 发表于 2012-2-9 15:03:51

干嘛不用EXCEL UDF?

tcpuuu 发表于 2012-2-9 20:55:35

本帖最后由 tcpuuu 于 2012-2-9 21:06 编辑

#include <Excel.au3>
#include <GUIConstantsEx.au3>
Global $gu_Form1 = GUICreate("EXCEL TEST", 220, 160, -1, -1)
Global $A1 = GUICtrlCreateInput("",2,38,64,22,0x01)
Global $A2 = GUICtrlCreateInput("",80,38,64,22,0x01)      

_ExcelBookOpen(@ScriptDir&"\1.xls")
WinSetState("Microsoft Excel - 1.xls","",@SW_MINIMIZE)

Global $oExcel = _ExcelBookAttach("1.xls","FileName")
      GUISetState(@SW_SHOW)
      AdlibRegister("aaa",100)
      Local $nMsg
      While 1
                $nMsg = GUIGetMsg()
                Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                              Exit
                EndSwitch
      WEnd
Func aaa()         
GUICtrlSetData($A1,_ExcelReadCell($oExcel, 2, 1));第2行第1列
GUICtrlSetData($A2,_ExcelReadCell($oExcel, 2, 5));第2列第5行
EndFunc;====aaa

==================================================

IF    1.xls 沒開啟   THEN
_ExcelBookOpen(@ScriptDir&"\1.xls") ;開啟1.xls
WinSetState("Microsoft Excel - 1.xls","",@SW_MINIMIZE) ;開啟之後 最小化
ENDIF

==========================================
以上這段 如何寫?

_ExcelReadCell
_ExcelBookOpen
以上這些 EXCEL函數 幫助 在那裡都找不到?

user3000 发表于 2012-2-9 22:49:37

**** Hidden Message *****
这个是我以前从论坛上下过的Excel操作示例, 很详细了.

还是那句话, 学习东西要善用论坛搜索.
学习东西, 更需要有耐心和毅力!

cjvls 发表于 2012-3-4 10:43:13

哦了个K看看

kk_lee69 发表于 2012-12-1 11:19:23

學習學習正在找問題的解決方法
页: [1]
查看完整版本: [已解决]求助每秒 復製excel B1 E1格的數據 到 $a1 $a2