If statement 如何确定是否打开了Excel文件?

If statement 如何确定是否打开了Excel文件?,if-statement,autoit,If Statement,Autoit,我的AutoIt脚本打开一个Excel文件并将其移动到桌面,但如果该Excel文件已打开,我发现一个问题,因此我需要在代码中添加一个条件,以便在打开Excel文件时通过 我的代码: #include<excel.au3> Func _WinWaitActivate($title,$text,$timeout=0) WinWait($title,$text,$timeout) If Not WinActive($title,$text) Then WinActiva

我的AutoIt脚本打开一个Excel文件并将其移动到桌面,但如果该Excel文件已打开,我发现一个问题,因此我需要在代码中添加一个条件,以便在打开Excel文件时通过

我的代码:

#include<excel.au3>

Func _WinWaitActivate($title,$text,$timeout=0)

    WinWait($title,$text,$timeout)
    If Not WinActive($title,$text) Then WinActivate($title,$text)
    WinWaitActive($title,$text,$timeout)

EndFunc

Func _Au3RecordSetup()

    Opt('WinWaitDelay',100)
    Opt('WinDetectHiddenText',1)
    Opt('MouseCoordMode',0)
    Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')

    If $aResult[1] <> '0000040C' Then
        MsgBox(64, 'Warning', 'Recording has been done under a different Keyboard layout' & @CRLF & '(0000040C->' & $aResult[1] & ')')
    EndIf

EndFunc

HotKeySet("{F2}", "COMP")

Func COMP()
    local $var = "C:\Users\Relkassah\Desktop\changment  data.xlsx"
    local $oExcel_1 = _Excel_Open()

    _Excel_BookOpen($oExcel_1,$var)
    Sleep(300)
    _WinWaitActivate("changment  data - Excel","")
    Send("{ALTDOWN}{SPACE}m{ALTUP}")
    MouseClick("left")
    MouseDown("left")
    MouseMove(150,444)
    MouseUp("left")
    Send("{ALTDOWN}{SPACE}{ALTUP}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}")

EndFunc

While 1
    Sleep(1)
WEnd
#包括
Func\u WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
如果不是WinActive($title,$text),则WinActivate($title,$text)
WinWaitActive($title、$text、$timeout)
EndFunc
Func_Au3RecordSetup()
选项('WinWaitDelay',100)
Opt('WinDetectHiddenText',1)
Opt('MouseCoordMode',0)
本地$aResult=DllCall('User32.dll','int','GetKeyboardLayoutNameW','wstr','')
如果$A结果[1]“00000 40 C”,则
MsgBox(64,'警告','录制已在不同的键盘布局下完成'&@CRLF&'(0000040C->'&$aResult[1]&'))
恩迪夫
EndFunc
热键集(“{F2}”,“COMP”)
Func COMP()
本地$var=“C:\Users\Relkassah\Desktop\changement data.xlsx”
本地$oExcel\u 1=\u Excel\u Open()
_Excel\u BookOpen($oExcel\u 1,$var)
睡眠(300)
_WinWaitActivate(“更改数据-Excel”和“”)
发送(“{ALTDOWN}{SPACE}m{ALTUP}”)
鼠标点击(“左”)
鼠标向下(“左”)
鼠标移动(150444)
鼠标(“左”)
发送(“{ALTDOWN}{SPACE}{ALTUP}{DOWN}{DOWN}{DOWN}{DOWN}{ENTER}”)
EndFunc
而1
睡眠(1)
温德

查看此功能,它可能会帮助您: 必须在while循环中添加if语句,例如:

    While 1
   
   If WinExists($yourwindow) Then
      ;do whatever you want here..
      EndIf
   
    Sleep(1)
WEnd

此函数将返回true或false值,在打开excel时,它将继续发送true。

\u excel\u Open
set@extended to:0-excel已运行///1-excel未运行或$bForceNew已设置为true。已创建新的Excel实例