如何在不使用 autohotkey 中的 com 对象打开和关闭 Excel 电子表格的情况下在其中添加一些值?

如何在不使用 autohotkey 中的 com 对象打开和关闭 Excel 电子表格的情况下在其中添加一些值?

我正在尝试使用此代码在单元格中添加一些值,而无需打开 Excel 电子表格并关闭它。

f1::
Xl := ComObjCreate("Excel.Application")
Xl.Workbooks.Open("c:\Users\Manoj Aggarwal\Desktop\DATA.xlsx") 
Xl.Visible := False
Xl.Range("b1").Value:= "jaisiaramji"
Workbooks.Save()
Workbooks.Quit()
Workbooks:="" 
Return

它们正在工作,但是当我手动打开该 Excel 表时,它会弹出以下消息:

DATA.xlsx is already open. Reopening will cause any changes you made to be discarded. 
Do you want to reopen DATA.xlsx.

我需要在代码中做哪些修改?

答案1

不确定如何从你的代码中获得有用的内容,但你需要引用工作簿,然后使用Workbook.Close 方法将第一个参数设置为 true,以便在关闭时保存文件。

请参阅文章中间的代码块这里用于获取对活动工作表和工作簿的引用,这不是您要做的,但它可能会给您一些尝试和测试的东西。如果您找到可行的解决方案,我会很感兴趣。

使用 Excel 对象时,有趣的是,您可以引用三个不同的对象(应用程序、工作簿和工作表),它们有各自的操作方法。除非您阅读 MSDN 文档,否则一开始会有点难以理解。

答案2

我已经尝试了以下两行并且对我有用:

xl.ActiveWorkbook.save() ;保存文件

Xl.ActiveWorkbook.close() ;关闭文件

因此不再出现错误消息“DATA.xlsx 已打开。重新打开将导致您所做的任何更改被丢弃。您是否要重新打开 DATA.xlsx”

相关内容