为什么我不能用 AHK 脚本保存 2 excel 个文件?

Why can't I save 2 excel files with AHK script?

我想从我公司的数据库中获取信息,单击 "export to excel" 按钮(一切正常),然后将导出保存到特定文件夹中。

第一个工作正常,保存,然后退出。

第二个没有。即使我按照删除命令进入 MsgBox,第二个文件 TEST1 也没有被删除。

然后弹出一个灰色的Excelwindow,里面没有工作sheet,一秒后消失,第二个导出的sheet还在只是坐在那里。

如果不是唯一打开的 excel 工作簿,我不知道它认为 X2 指的是什么。我需要以某种方式 "really" 退出 X1 还是什么?如果我尝试执行两次保存,它似乎会失败。

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.

+^g::

;; generate an excel spreadsheet from our DB

Sleep 5000

X1 := ComObjActive("Excel.Application")
X1.Visible := True

If FileExist("M:\Current Users\aparisi\MaryFiles\TEST.xlsx") {

    MsgBox, "We found TEST"
    FileDelete, "M:\Current Users\aparisi\MaryFiles\TEST.xlsx"  

}

X1.ActiveWorkbook.SaveAs("M:\Current Users\aparisi\MaryFiles\TEST.xlsx")
X1.Quit()

;; props

;; generate a 2nd excel spreadsheet from our DB

Sleep 5000

X2 := ComObjActive("Excel.Application")
X2.Visible := True

If FileExist("M:\Current Users\aparisi\MaryFiles\TEST1.xlsx") {

    MsgBox, "We found TEST1"
    FileDelete, "M:\Current Users\aparisi\MaryFiles\TEST1.xlsx"
    MsgBox, "We apparently just deleted TEST1"

}

X2.ActiveWorkbook.SaveAs("M:\Current Users\aparisi\MaryFiles\TEST1.xlsx")
X2.Quit()

WinActivate Act! Premium Plus - TenThirtyOneServices
WinWaitActive Act! Premium Plus - TenThirtyOneServices

CoordMode, Mouse, Screen

MouseMove, 1172, 312
Click
Click
Sleep 1000
MouseMove, 1154, 688
Click
Sleep 1000

Return

尝试这样的事情

+^g::

;; generate an excel spreadsheet from our DB

Sleep 5000

X1 := ComObjCreate("Excel.Application")  ; create a new instance of Excel
X1.Visible := true                       ; make Excel visible
X1 := ComObjActive("Excel.Application")  ; make Excel active
X1.Workbooks.Add()                       ; create a new blank workbook  in the active instance

If FileExist("M:\Current Users\aparisi\MaryFiles\TEST.xlsx") 
{
    MsgBox, "We found TEST"
    FileRecycle, M:\Current Users\aparisi\MaryFiles\TEST.xlsx
    Sleep 500
    If !FileExist("M:\Current Users\aparisi\MaryFiles\TEST.xlsx")
        MsgBox, "We just deleted TEST.xlsx"
    else
        MsgBox, "We could NOT delete TEST"
}

X1.ActiveWorkbook.SaveAs("M:\Current Users\aparisi\MaryFiles\TEST.xlsx")
X1.Quit()
X1 := ""                     ; clear the variable


;; props

;; generate a 2nd excel spreadsheet from our DB

Sleep 5000

X2 := ComObjCreate("Excel.Application")  ; create a new instance of Excel
X2.Visible := true                       ; make Excel visible
X2.Workbooks.Add()                       ; create a new blank workbook in the active instance of Excel

X2 := ComObjActive("Excel.Application")
X2.Visible := True

If FileExist("M:\Current Users\aparisi\MaryFiles\TEST1.xlsx") 
{
    MsgBox, "We found TEST1"
    FileRecycle, M:\Current Users\aparisi\MaryFiles\TEST1.xlsx
    Sleep 500
    If !FileExist("M:\Current Users\aparisi\MaryFiles\TEST1.xlsx")
        MsgBox, "We just deleted TEST1.xlsx"
    else
        MsgBox, "We could NOT delete TEST1.xlsx"
}
X2.ActiveWorkbook.SaveAs("M:\Current Users\aparisi\MaryFiles\TEST1.xlsx")
X2.ActiveWorkbook.Close
X2.Quit()
X2 := ""  

; .....
Return