讨论下怎样才能提高Excel的UDF在Ofice2007中的效率
本帖最后由 xwt620 于 2011-10-26 21:35 编辑公司经常用Excel处理些需要计算方面的文档,有些公式也挺复杂,单纯的用excel内置函数写起来很麻烦,所以就会用外部程序来解决问题(因为偶对VBA不是很熟),那么就会用到_ExcelReadCell和_ExcelWriteCell,以前用2003时效率非常高,感觉就是毫秒级的,但是现在升级到2007后发现效率就非常的差了,读取20-30个数据就需要好几秒钟才能完成,所以就需要修改下Excel的UDF来提高效率。Func _ExcelReadCell($oExcel, $sRangeOrRow, $iColumn = 1)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not StringRegExp($sRangeOrRow, "", 0) Then
If $sRangeOrRow < 1 Then Return SetError(2, 0, 0)
If $iColumn < 1 Then Return SetError(2, 1, 0)
Return $oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value
Else
Return $oExcel.Activesheet.Range($sRangeOrRow).Value
EndIf
EndFunc ;==>_ExcelReadCellFunc _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not StringRegExp($sRangeOrRow, "", 0) Then
If $sRangeOrRow < 1 Then Return SetError(2, 0, 0)
If $iColumn < 1 Then Return SetError(2, 1, 0)
$oExcel.Activesheet.Cells($sRangeOrRow, $iColumn).Value = $sValue
Return 1
Else
$oExcel.Activesheet.Range($sRangeOrRow).Value = $sValue
Return 1
EndIf
EndFunc ;==>_ExcelWriteCell 不知道kevinch 哥有没有好的办法? 办法就是换回2003 我觉得我没有这个能力说服领导去换回2003 今天想了个办法,明天试试用ObjGet来看看效率怎么样,感觉问题就出在这里。 看来还只能换回2003才行
2003和2007有什么区别,同样的代码居然效率相差7倍以上
页:
[1]