我正在尝试检查一个 excel 文件是否打开,以及它是否使用现有的打开文件。如果不是,我想打开文件。
这段代码只是给出了一个空白的 msgbox:
SetTitleMatchMode 2
xlWB := "MyExcelWorkbookTitle"
if(!WinExist(xlWB)) {
xl := ComObjCreate("Excel.Application")
FileSelectFile, Path
xl.Workbooks.Open(Path)
xl.Visible := True
WinActivate %xlWB%
} else {
xl := ComObjCreate("Excel.Application")
WinActivate %xlWB%
}
rowCount := xl.ActiveSheet.UsedRange.Rows.Count - 1
MsgBox %rowCount%
我在这里做错了什么?
编辑: 澄清一下,当没有工作簿打开时,此功能正常,但是当已经打开一个工作簿时,它只会以只读方式打开另一个工作簿。
用简单的英语,我希望它这样做:如果打开一个工作簿,其中文件名的前 x 个字符与预定义的字符串匹配,则使用该工作簿,否则打开一个新工作簿。
EDIT2: 我认为值得一提的是我正在尝试编码的情况。当用户第一次运行脚本时,它应该打开一个 Excel 工作簿并更新网页中的值。在这样做的过程中,它可能会失败,并且脚本可能会退出。此时,用户将留下一个打开的工作簿,其中包含脚本在失败之前处理的行的未保存条目。
我希望能够重新运行脚本并将现有打开的工作簿附加到 com 对象,以便脚本可以继续正常运行。
有一个更好的方法吗?如果更新网站时出现问题,我应该只保存脚本并关闭工作簿吗?
或者可能以不退出脚本但迭代循环并使用下一个 excel 行再次尝试的方式对脚本进行编码?