本帖最后由 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, "[A-Z,a-z]", 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 ;==>_ExcelReadCell
Func _ExcelWriteCell($oExcel, $sValue, $sRangeOrRow, $iColumn = 1)
If Not IsObj($oExcel) Then Return SetError(1, 0, 0)
If Not StringRegExp($sRangeOrRow, "[A-Z,a-z]", 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
|