本帖最后由 fenhanxue 于 2017-5-27 10:24 编辑 #cs
Excel 表中,有A1 B1 C1 D1 四个单元格
其中,A1 B1 C1 是自变量,需要手动输入
D1 是因变量,已经写好了公式,如 D1 =A1+B1*C1
那么,我手动输入A1 B1 C1 后,D1 会自动显示结果,如继续以 D1 =A1+B1*C1为例子,
假设输入 A1 = 1 B1 = 2 C1 = 3
那么 D1 就会显示7 (1+2*3)
上述过程,要得到D1,可以这样实现:
#ce
#include <Excel.au3>
Local $oExcel = _ExcelBookOpen(@ScriptDir &'\公式模板.xlsx') ;创建新工作簿, 并使其可见
Local $a1 = 1
Local $b1 = 2
Local $c1 = 3
_ExcelWriteCell($oExcel, $a1, 1, 1) ;写入内容到单元格A1
_ExcelWriteCell($oExcel, $b1, 1, 2) ;写入内容到单元格B1
_ExcelWriteCell($oExcel, $c1, 1, 3) ;写入内容到单元格C1
MsgBox(0,'D1的最终结果为:',_ExcelReadCell($oExcel,1,4))
;====================================================那么我的问题是
我上面D1的公式非常简单,excel计算结果耗时应该是非常短的。那么上述代码应该没问题。
那么,假设D1 的公式是一个非常非常非常非常复杂非常非常非常耗时的公式,如可能要耗费10分钟才能计算出结果。那么上述代码是否就会有问题,是否应该加一个判断:
即判断D1是否已经完成了计算。
那么这个判断应该怎么写呢?
即:
#include <Excel.au3>
Local $oExcel = _ExcelBookOpen(@ScriptDir &'\公式模板.xlsx') ;创建新工作簿, 并使其可见
Local $a1 = 1
Local $b1 = 2
Local $c1 = 3
_ExcelWriteCell($oExcel, $a1, 1, 1) ;写入内容到单元格A1
_ExcelWriteCell($oExcel, $b1, 1, 2) ;写入内容到单元格B1
_ExcelWriteCell($oExcel, $c1, 1, 3) ;写入内容到单元格C1
Do
Sleep(1000)
Until D1 已经完成计算得到了结果。 即现在这一行的代码应该如何写?
MsgBox(0,'D1的最终结果为:',_ExcelReadCell($oExcel,1,4))
解决办法:$oExcel.application.calculationstate=0 |